使用selenium的send_keys()发送表情符号

abu*_*abu 6 python selenium

我想送一份:heart:带有硒的表情符号send_keys()

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait

driver = webdriver.Chrome('./chromedriver')

driver.get("https://web.whatsapp.com/")
wait = WebDriverWait(driver, 600)

message = driver.find_elements_by_xpath('//*[@id="main"]/footer/div[1]/div[2]/div/div[2]')[0]
message.send_keys(":heart:")
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用并发送字符串':heart:'.

你能否建议如何正确地做到这一点?

小智 10

出色地,

\n

这是一个解决方法!希望它有效!

\n
text_element = driver_trader.find_element_by_xpath('xpath')\ntext = '\xe2\x9a\xaa'\n\ndriver.execute_script("arguments[0].innerHTML = '{}'".format(text),text_element)\ntext_element .send_keys('.')\ntext_element .send_keys(Keys.BACKSPACE)\n
Run Code Online (Sandbox Code Playgroud)\n


Mah*_*von 9

这是一个棘手的方法。我们可以借助 JavaScript 和driver.execute_scriptJS 代码。您可以使用此函数来执行此操作:

from selenium import webdriver
from selenium.webdriver.common.by import By
import chromedriver_autoinstaller

chromedriver_autoinstaller.install()
driver = webdriver.Chrome()

def paste_content(driver, el, content):
    driver.execute_script(
      f'''
const text = `{content}`;
const dataTransfer = new DataTransfer();
dataTransfer.setData('text', text);
const event = new ClipboardEvent('paste', {{
  clipboardData: dataTransfer,
  bubbles: true
}});
arguments[0].dispatchEvent(event)
''',
      el)

# Go to a page
driver.get('https://some-random-site-as-you-wish.com')
# Find the input box
input_el = driver.find_element(By.XPATH, '//some-xpath')
msg = 'Done!  '
paste_content(driver, input_el, msg)
Run Code Online (Sandbox Code Playgroud)

  • 这救了我的命!哇!非常感谢。 (2认同)

小智 6

伙计们。我发现了一种非常简单但功能强大的方法,可以使用 Selenium 将表情符号添加到 WhatsApp

Message_box.send_keys(':emoji' u'\ue007') # You just have to enter the code cording to the next page
Run Code Online (Sandbox Code Playgroud)

https://gist.github.com/hkan/264423ab0ee720efb55e05a0f5f90887


Anc*_*wal 4

你不能直接这样做。您需要通过 JavaScript 来完成此操作。一旦 Javascript 被正确格式化,您需要通知侦听器。

在此之前,您需要找到您想要使用的任何表情符号的 unicode。要获取任何表情符号的代码点,可以使用以下网站: https://emojipedia.org/ 搜索任何表情符号,在页面底部,将会有它的代码点。

要将 JavaScript 的代码点转换为 unicode,请使用以下网站: https: //r12a.github.io/app-conversion/

输入代码点并将值复制到其 javascript 框中。一旦你有了它,就可以使用 JavaScript,如下所示:

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

elem = driver.find_element_by_id('<Id of your webelement>')
text = u'\u2764'

driver.execute_script(JS_ADD_TEXT_TO_INPUT, elem, text)
Run Code Online (Sandbox Code Playgroud)

2764 是心形表情符号的 unicode。希望这对您想要插入 Whatsapp 的任何类型的表情符号有所帮助!

编辑:对于更复杂的表情符号:您需要添加多个 unicode,例如家庭表情符号:\uD83D\uDC6A