当前位置: 首页 > 面试题库 >

Selenium ChromeDriver无法识别新编译的无头铬(Python)

井兴怀
2023-03-14
问题内容

我试图将新的(2016) 头版Chromium与Selenium /
ChromeDriver一起使用(过去,我将Firefox与xfvb一起使用,但这有望变得更好)。

我根据此处找到的说明从源代码中编译了一个无头版本的Chromium(我没有找到任何预构建的二进制文件),然后使用以下代码通过Selenium启动它:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

l_option = Options()
l_option.add_argument('headless')
l_option.add_argument('disable-notifications')
l_option.binary_location = '/home/fi11222/Headless_Chromium/headless_shell'
l_driver = webdriver.Chrome(chrome_options=l_option)

相同的代码适用于标准铬(如果我删除该binary.location选件)

但是,我得到以下错误:

selenium.common.exceptions.WebDriverException: Message: unknown error: unrecognized Chrome version: HeadlessChrome/59.0.3032.0
  (Driver info: chromedriver=2.27.440175 (9bc1d90b8bfa4dd181fbbf769a5eb5e575574320),platform=Linux 4.4.0-53-generic x86_64)

显然,无头铬二进制文件使用ChromeDriver无法识别的版本ID进行编译。救命 !!

环境:

  • 编译:Ubuntu 16.04服务器
  • selenium执行:Linux Mint 18.1

问题答案:

chromedriver自此补丁(在发布消息后创建)以来就被Chromedriver识别,该补丁仅在chromedriver
2.29(2017年4月发布)之后可用。确保您在PATH中具有此chromedriver可执行文件,并且Selenium正在选择它,而不是您可能具有的任何其他chromedriver。

另外,请注意-
根据无头的Chrome文档
-您还需要传递两个标志:

l_option.add_argument('remote-debugging-port=9222')
l_option.add_argument('disable-gpu')

至于无头Chrome的预构建二进制文件-该选项自Chrome 57起可用,因此当前通过官方Google存储库发布的所有版本(即稳定的Chrome
58和不稳定的Chrome 59)都支持该选项。它是Chrome
59的亮点,因此可以期待一些粗糙的边缘,直到功能稳定为止。



 类似资料:
  • 假设我们在外部工件中有一个接口,我们无法更改: 以及此接口的一个实现,具有对应于父接口的更多成员。Lombok生成的getters/setters不能被编译器识别,所以我必须添加实际的getter方法来使下面的类可编译。 编译错误是接口方法未实现时的标准错误: my.package.测试实现不是抽象的,并且不会覆盖TestInterface中my.package.抽象方法isTest() 假设Lo

  • 实际上,我的项目有单元测试。它们都是在< code>/src/test/java/中配置的。最近我需要在< code >/src/androidTest/Java 中添加插装测试。为此,我在< code>build.gradle中添加了espresso依赖项。 之后,我选择了构建变体- 但是当我开始编码时,没有一个依赖项被识别出来: “无法解析符号 onView”、“无法解析符号视图交互”等...

  • 我试图遵循这个指南,使铬无头无法检测。 在使用Python和Selenium时,有没有一种方法可以以更便携的方式使Chrome无头无法被检测到?

  • 问题内容: 我正在使用python-selenium和Chrome 59,并尝试自动执行简单的下载序列。当我正常启动浏览器时,下载有效,但是当我以无头模式运行时,下载不起作用。 我什至尝试添加默认路径: 在常规实现中,添加默认路径是可行的,但是无头版本仍然存在相同的问题。 如何使下载以无头模式开始? 问题答案: 是的,这是安全的“功能”。如前所述,这里是Bug讨论:https : //bugs.c

  • 我有以下序列

  • 我不确定这是否是一个与我没有这台计算机的管理权限有关的问题。任何帮助,以便我可以进一步排除故障,将非常感谢! 谢谢