J'automatise les messages WhatsApp et je voudrais les envoyer via une fenêtre tkinter. Dans cette fenêtre tkinter, j'ai créé une boîte de message à l'aide de .label () et je peux me connecter à WhatsApp Web via Selenium.
Actuellement, je peux déjà envoyer des messages, mais sans emojis. Lorsque j'inclus des emojis, j'obtiens cette erreur "Chromedriver ne prend en charge que les caractères dans le BMP". Comment puis-je inclure des emojis?
Pour ceux qui veulent envoyer des emojis sur Chrome
Solution
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);
}
Appelez-le comme ça
const element = await this.driver.findElement(selector);
await sendKeysWithEmojis(element, '???????? This one shall pass ????????');
Que se passe-t-il ici? Nous émulons des pressions de touches natives à l'aide d'événements
Notez que le {bubbles: true}
est facultatif (était nécessaire dans mon cas en raison d'une entrée complexe encapsulée)
Ça marche pour moi:
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)