我试图将新的(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进行编译。救命 !!
环境:
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
我有以下序列
我不确定这是否是一个与我没有这台计算机的管理权限有关的问题。任何帮助,以便我可以进一步排除故障,将非常感谢! 谢谢