web-dev-qa-db-fra.com

Chromedriver prend uniquement en charge les caractères dans l'erreur BMP lors de l'envoi d'Emoji avec ChromeDriver Chrome en utilisant Selenium Python vers la zone de texte de l'étiquette de Tkinter ())

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?

5
Malcolm Leck

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)

0
Gal Bracha

Ç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)

enter image description here

0
Jackssn