web-dev-qa-db-ja.com

Chromedriverは、BMPエラーの文字のみをサポートしますChrome Seleniumを使用してPython to Tkinter's label()テキストボックスに

Whatsappメッセージを自動化しているため、tkinterウィンドウから送信したいと考えています。このtkinterウィンドウで、.label()を使用してメッセージボックスを作成しました。Seleniumを介してwhatsapp webに接続できます。

現在、絵文字なしでメッセージを送信できます。絵文字を含めると、「ChromedriverはBMPの文字しかサポートしない」というエラーが表示されます。絵文字を含めるにはどうすればよいですか?

5
Malcolm Leck

Chromeで絵文字を送信したい人のために

ソリューション

    async sendKeysWithEmojis(element, text) {
        const script = `var Elm = arguments[0],
        txt = arguments[1];Elm.value += txt;
        Elm.dispatchEvent(new Event('keydown', {bubbles: true}));
        Elm.dispatchEvent(new Event('keypress', {bubbles: true}));
        Elm.dispatchEvent(new Event('input', {bubbles: true}));
        Elm.dispatchEvent(new Event('keyup', {bubbles: true}));`;
        await this.driver.executeScript(script, element, text);
    }

そのように呼び出す

const element = await this.driver.findElement(selector);
await sendKeysWithEmojis(element, '???????? This one shall pass ????????');

ここで何が起こっているのですか?イベントを使用してネイティブキープレスをエミュレートしています

{bubbles: true}はオプションです(ラップされた入力が複雑なため、私の場合は必要でした)

0
Gal Bracha

わたしにはできる:

from Selenium import webdriver

JS_ADD_TEXT_TO_INPUT = """
  var Elm = arguments[0], txt = arguments[1];
  Elm.value += txt;
  Elm.dispatchEvent(new Event('change'));
  """

browser = webdriver.Chrome('C:\\Python37\\chromedriver.exe')
browser.get("https://google.com/")
elem = browser.find_element_by_name('q')

text = "???? ???? " + u'\u2764'

browser.execute_script(JS_ADD_TEXT_TO_INPUT, elem, text)

enter image description here

0
Jackssn