Selenium ChromeDriver 无法识别新编译的 Headless Chromium (Python)

Selenium ChromeDriver does not recognize newly compiled Headless Chromium (Python)

我正在尝试将新的 (2016) headless 版本的 Chromium 与 Selenium/ChromeDriver 一起使用(过去,我将 Firefox 与 xfvb 一起使用,但这有望成为好多了)。

我根据找到的说明 here 从源代码(我没有找到任何预构建的二进制文件)编译了 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)

显然,headless chromium 二进制文件是使用 ChromeDriver 无法识别的版本 ID 编译的。求助!!

环境:

ChromeHeadless 自 this patch 以来被 chromedriver 识别(在您收到 post 您的消息后创建),这仅在 chromedriver 2.29(2017 年 4 月发布)之后可用。确保你在 PATH 中有这个 chromedriver 可执行文件,并且 Selenium 正在选择它而不是你可能有的任何其他 chromedriver。

此外,请注意 - 根据 headless Chrome documentation - 您需要再传递两个标志:

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

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