【问题标题】:Find element by id not working in Chrome Headless mode按 id 查找元素在 Chrome Headless 模式下不起作用
【发布时间】:2019-11-26 12:53:00
【问题描述】:
  • 硒 - 3.141.0
  • 无头铬=75.0.3770.142

示例代码:

from selenium import webdriver

options = Options()
options.add_argument('--headless')
driver = webdriver.Chrome(CHROME_DRIVER_LOCATION, options=options)
driver.set_page_load_timeout(timeout)

driver.find_element_by_id("keywords").send_keys("some keywords to search")

“关键字”是<input> 类型

最后一行在 headless chrome 中失败,否则工作正常。

错误:

driver.find_element_by_id("keywords").send_keys("一些要搜索的关键字") 文件“/usr/local/lib/python3.7/site-packages/selenium/webdriver/remote/webelement.py”,第 479 行,在 send_keys '值':keys_to_typing(值)}) _execute 中的文件“/usr/local/lib/python3.7/site-packages/selenium/webdriver/remote/webelement.py”,第 633 行 return self._parent.execute(命令,参数) 文件“/usr/local/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py”,第 321 行,在执行 self.error_handler.check_response(响应) 文件“/usr/local/lib/python3.7/site-packages/selenium/webdriver/remote/errorhandler.py”,第 242 行,在 check_response 引发异常类(消息、屏幕、堆栈跟踪) selenium.common.exceptions.ElementNotInteractableException:消息:元素不可交互 (会话信息:headless chrome=75.0.3770.142)

【问题讨论】:

  • 这是在交互模式下工作吗?
  • 尝试在 chrome 浏览器中打开页面并检查与该 id 关联的元素。它可能只是您想要与之交互的孩子的包装。或者,您可以尝试使用driver.execute_script("use JS code to interact with your element") 看看是否有效

标签: python selenium selenium-webdriver


【解决方案1】:

对于headless 浏览器,您必须将window size 设置为触发事件。因为headless 浏览器不能recognise click 没有window size

 options= Options()
 options.add_argument('--headless')
 options.add_argument('window-size=1920x1080');

【讨论】:

  • 查看您的其他 answer 设置窗口大小对我有用。也许你想编辑你的答案。
  • 如果您看到评论部分,我问过您的代码是否使用交互模式。如果是,这意味着对于无头模式,您需要设置窗口大小来执行操作。
  • 哦,我错过了。谢谢!
猜你喜欢
  • 1970-01-01
  • 2019-10-20
  • 1970-01-01
  • 2017-11-09
  • 1970-01-01
  • 2018-12-06
  • 2021-09-20
  • 2021-11-19
  • 1970-01-01
相关资源
最近更新 更多