一尘不染

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

selenium

我试图将新的(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

阅读 394

收藏
2020-06-26

共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的
亮点,因此可以期待一些粗糙的边缘,直到功能稳定为止。

2020-06-26