【问题标题】:Selenium send_keys doesn't sent apostropheSelenium send_keys 不发送撇号
【发布时间】:2020-05-16 12:28:19
【问题描述】:

在 Selenium 中,我想输入一个测试字符串 "hello'world",但网页的文本框变成了 "helloworld"。好像撇号不存在一样。将"'" 替换为chr(39) 或拆分字符串也不起作用。

  • 我的部分代码:(在python中使用Chrome webdriver)
driver = webdriver.Chrome()
driver.get("https://google.com")
text = "hello'world"
textbox = driver.find_element_by_xpath('//* 
[@id="tsf"]/div[2]/div[1]/div[1]/div/div[2]/input')
for i in text:
    textbox.send_keys(i)
    sleep(0.1)
  • 浏览器截图:

【问题讨论】:

  • 尝试使用 text = “hello”+”'”+ “World”。有时会因为键盘布局而出现此问题。

标签: python selenium selenium-webdriver webdriverwait sendkeys


【解决方案1】:

要在 Google 主页 的搜索框中发送 字符序列 hello'world,您需要诱导 WebDriverWait em> 对于element_to_be_clickable(),您可以使用以下Locator Strategy

  • 使用CSS_SELECTOR

    from selenium import webdriver
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
    driver.get("https://google.com")
    text = "hello'world"
    textbox = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.NAME, "q")))
    for i in text:
        textbox.send_keys(i)
    
  • 浏览器快照:


更新

以前在调用send_keys() 时,非美国键盘设置Unicode 字符似乎存在一些问题。您可以在以下位置找到一些相关讨论:

此问题已通过提交 Fixing encoding of payload passed by hub to a node 解决。

使用 Selenium v​​3.5.3 应该可以解决这个问题。


tl;博士

Change your keyboard layout

【讨论】:

  • 您能否解释一下元素的可点击性如何影响helloworldhello'world
  • @StevenRumbalski 简而言之,Google 搜索主页 元素是启用了JavaScript 的元素。为 element_to_be_clickable() 引入 WebDriverWait 我们需要确保该元素是 clickable 即所有的 JavaScriptAJAX 调用已完成,因此通过send_keys() 发送的字符序列不会失真。
  • 这似乎无法解决问题,可能与我的键盘布局有关吗? (Azerty,比利时)虽然 ' 似乎是唯一没有通过的字符。
  • @Cedric 查看答案更新并告诉我状态。
  • @Cedric 可能,你是对的,我希望我能在我的最后重现这个问题以进一步挖掘。如果有任何积极的进展,我会及时通知您。
【解决方案2】:

解决方案: 使用 geckodriver 从 Chromedriver 更改为 Firefox。在当前版本的 Chromedriver 中,单引号和双引号似乎有问题。

【讨论】:

    猜你喜欢
    • 2017-04-20
    • 2020-09-02
    • 2019-11-18
    • 1970-01-01
    • 2022-11-06
    • 2021-10-17
    • 1970-01-01
    • 2017-07-09
    • 2021-06-12
    相关资源
    最近更新 更多