Whatsappメッセージを自動化しているため、tkinterウィンドウから送信したいと考えています。このtkinterウィンドウで、.label()を使用してメッセージボックスを作成しました。Seleniumを介してwhatsapp webに接続できます。
現在、絵文字なしでメッセージを送信できます。絵文字を含めると、「ChromedriverはBMPの文字しかサポートしない」というエラーが表示されます。絵文字を含めるにはどうすればよいですか?
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}
はオプションです(ラップされた入力が複雑なため、私の場合は必要でした)
わたしにはできる:
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)