我找过很多答案,也试过各种方法,最后想想,还是用粘贴的方式比较靠谱。
也就是通过键盘组合键Ctrl + V 来达到键入的目的,可以很好的规避各种问题。
import win32clipboard
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
# 创建web驱动对象
driver = webdriver.Edge()
# 访问网址
driver.get('https://www.baidu.com/')
# 定位元素
element = driver.find_element(By.CSS_SELECTOR, '[id="kw"]')
text = '😊包含符号表情的文本,或者其他非主流文本'
try:
win32clipboard.OpenClipboard() # 打开剪切板
win32clipboard.SetClipboardData(win32clipboard.CF_UNICODETEXT, text) # 向剪切板写入文本
except Exception as oo_Error: print(repr(oo_Error))
finally: win32clipboard.CloseClipboard() # 关闭剪切板
element.send_keys(Keys.CONTROL,'v') # 对元素执行 Ctrl + V 的组合键操作
element.send_keys(Keys.ENTER) # 回车确认