Chrome webdriver发送密钥不发送'3'

时间:2017-11-12 11:31:22

标签: python google-chrome selenium webdriver

由于某种原因,我无法将字符'3'写入页面的输入元素。

此代码:

    chrome_options = Options()
    chrome_options.add_argument('--dns-prefetch-disable')
    chrome_options.add_argument('--no-proxy-server')
    chromeDriverPath = self.getChromeDriverPath()
    os.environ["webdriver.chrome.driver"] = chromeDriverPath
    self.driver = webdriver.Chrome(chromeDriverPath, chrome_options=chrome_options)

    self.driver.get(self.loginUrl)
    login = self.driver.find_element_by_id('login_credit')
    login.send_keys("12345")

导致在登录输入中写入“1245”... 有人可以帮忙吗? 我使用python 2.7,最新的chrome和最新的chromedriver

编辑:

login.send_keys("3")

login.send_keys("\3")

也不起作用。

login.send_keys("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()")

- 字符串中只缺少“3”...

什么有效?

login.send_keys(Keys.NUMPAD3)

正如Andersson在下面所建议的那样,但这不是一个解决方案。

我在谷歌搜索框中尝试过,我遇到了同样的行为。

3 个答案:

答案 0 :(得分:6)

更新到最新chrome driver已解决此问题。

答案 1 :(得分:1)

您可以使用下面提到的任何替代方案,而不是使用 send_keys("12345")

  1. 使用 Keys.NUMPAD3

    login.send_keys(Keys.NUMPAD3)
    
  2. JavascriptExecutor getElementById 一起使用:

    self.driver.execute_script("document.getElementById('login_credit').value='12345'")
    
  3. JavascriptExecutor getElementsById 一起使用:

    self.driver.execute_script("document.getElementsById('login_credit')[0].value='12345'")
    

答案 2 :(得分:0)

奇怪的问题,尝试在send_keys中传递字符串变量,尝试可能适用于您

my_str = "12345"
login = self.driver.find_element_by_id('login_credit')
login.send_keys(my_str)