python画表情代码_Python selenium send_keys表情符号支持

我正在尝试使用selenium的send_keys将表情符号字符发送到带有以下

python代码的文本框中.

browser = webdriver.Chrome(chrome_options=options)

browser.get("https://www.google.co.in")

time.sleep(5)

working = browser.find_element_by_id('lst-ib')

text = u'Python is 👍'

working.send_keys(text)

我收到以下错误.

Traceback (most recent call last):

File "smiley.py", line 30, in

working.send_keys(text)

File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webelement.py", line 347, in send_keys

self._execute(Command.SEND_KEYS_TO_ELEMENT, {'value': keys_to_typing(value)})

File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webelement.py", line 491, in _execute

return self._parent.execute(command, params)

File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 238, in execute

self.error_handler.check_response(response)

File "C:\Python27\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 164, in check_response

raise exception_class(value)

selenium.common.exceptions.WebDriverException: Message: missing command parameters

在搜索时我发现selenium send_keys仅支持单字节字符.但我想知道,如果有任何其他方式我可以做到这一点.

我尝试过使用CTRl C和CTRL V组合,它正在运行.但有时剪贴板内容在粘贴之前会被更改(复制和粘贴几乎立即发生).

我无法使用execute_script设置字段的值,因为它不是输入元素而是跨度.我可以在我的用例中设置inner_text但无用.

更新:

我已经使用了一些解决方法来解决剪贴板覆盖问题.工作代码如下.

schedule = urllib2.urlopen(request,context=ctx)

text = schedule.read().decode('utf-8')

elem = browser.find_element_by_class_name(xpathObj['commentLink'])

elem.click()

time.sleep(2)

ActionChains(browser).send_keys('a').perform()

time.sleep(2)

copy_attempt = 0

while True:

span_element = browser.find_element_by_xpath(xpathObj['commentSpan'])

browser.execute_script("arguments[0].innerText = arguments[1]", span_element, text)

time.sleep(2)

ActionChains(browser).key_down(Keys.CONTROL).send_keys('a').key_up(Keys.CONTROL).perform()

time.sleep(1)

ActionChains(browser).key_down(Keys.CONTROL).send_keys('c').key_up(Keys.CONTROL).key_down(Keys.CONTROL).send_keys('V').key_up(Keys.CONTROL).perform()

time.sleep(1)

win32clipboard.OpenClipboard()

text1 = win32clipboard.GetClipboardData(win32clipboard.CF_UNICODETEXT)

emoji_pattern = re.compile(

u"(\ud83d[\ude00-\ude4f])|" # emoticons

u"(\ud83c[\udf00-\uffff])|" # symbols & pictographs (1 of 2)

u"(\ud83d[\u0000-\uddff])|" # symbols & pictographs (2 of 2)

u"(\ud83d[\ude80-\udeff])|" # transport & map symbols

u"(\ud83c[\udde0-\uddff])" # flags (iOS)

"+", flags=re.UNICODE)

s = difflib.SequenceMatcher(None,emoji_pattern.sub(r'', text), emoji_pattern.sub(r'', text1))

if (s.ratio() < 1.0):

if (copy_attempt < 5):

copy_attempt = copy_attempt + 1

continue

else:

break

else:

ActionChains(browser).send_keys(Keys.RETURN).perform()

time.sleep(3)

break

time.sleep(3)

谢谢你们.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值