【问题标题】:Cannot construct KeyEvent from non-typeable key only with special characters, using Selenium-chromedriver无法使用 Selenium-chromedriver 仅使用特殊字符从不可键入的键构造 KeyEvent
【发布时间】:2022-02-15 06:18:01
【问题描述】:

当我通过 selenium 发送包含特殊字符(例如“@”)的密钥时,我收到了这个错误:

无法从不可键入的键构造 KeyEvent

但是,对于字母字符,函数.send_keys() 可以工作。我想将我的用户名作为“foo@email.com”发送到Squarespace login page。我曾尝试使用 Chrome、Safari、Firefox 作为网络驱动程序,并且在所有情况下都会出现相同的错误。

可复制的代码示例:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
url = "https://login.squarespace.com/"
driver.get(url)
email_but = driver.find_element_by_name("email")
email_but.send_keys('foo@email.com')

我试图通过复制到剪贴板然后粘贴到字段来绕过错误:

import xerox
username = "foo@email.com"
xerox.copy(username)
email_but = driver.find_element_by_name("email")
email_but.click()
email_but.send_keys(Keys.CONTROL, 'v')

但出现同样的错误。

我目前正在使用:

  • OSX v.12.0.1
  • Chromedriver v.98.0.4758.80
  • Chrome v.98.0.4758.80
  • Safari v.15.1

【问题讨论】:

    标签: python-3.x selenium google-chrome selenium-webdriver selenium-chromedriver


    【解决方案1】:

    此错误消息...

    Cannot construct KeyEvent from non-typeable key
    

    ...使用ChromeDriver v98 是以下回归的结果:

    Issue 3999: Executing a sendKeys(Keys.chord()) results in extra symbol character prefixed to inputted text using Chrome / driver 98

    在尝试解决非 BMP 问题时:

    Issue 2269: Impossible to use non-BMP characters (code points above U+FFFF).

    但是,CL 已经是Revert "WebDriver supports non-BMP characters in SendKeys",但由于Issue 1295243: Regression in ChromeDriver sendKeys 而被阻止


    修复可用性

    该修复程序已经过验证,并将与 ChromeDriver v98.0.4758.99 和 ChromeDriver v99.0.4844.29


    另类

    作为替代方案,您也可以将 v98.0ChromeDriver 一起使用v97.0

    【讨论】:

      猜你喜欢
      • 2011-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-24
      • 1970-01-01
      • 2022-12-22
      • 2011-02-24
      相关资源
      最近更新 更多