【发布时间】:2017-03-05 10:14:45
【问题描述】:
我正在尝试将新的 (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)
显然,无头 chromium 二进制文件是使用 ChromeDriver 无法识别的版本 ID 编译的。救命!!
环境:
- 编译:Ubuntu 16.04 服务器
- Selenium 执行:Linux Mint 18.1
【问题讨论】:
-
检查您的 chrome 驱动程序支持的 Chrome 版本。我读到它支持 Chrome 54 到 56,而你的 headless chrome 是 59。尝试安装以前的 chrome 版本
-
我不能。因为 59 之前的版本显然不支持 headless 模式。该功能只能追溯到 2016 年年中。顺便说一句,我怎么知道 Chrome Webdriver 支持哪个特定版本?
-
另外,我检查了 ChromeDriver Sources。显然没有最高版本,只有最低版本,现在显然是 55。所以问题出在其他地方。
-
sites.google.com/a/chromium.org/chromedriver/downloads 它说最新版本:ChromeDriver 2.27 支持 Chrome v54-56 当您使用 Selenium 时,您必须注意浏览器版本,并且只使用当前 selenium 驱动程序支持的版本。通常,selenium 驱动程序有点落后于浏览器。
-
我想使用 Chromium 的原因是它是唯一的原生无头浏览器,它也与广泛使用的生产浏览器相同。对于非常讨厌和复杂的网站,HtmlUnit 和 PhantomJS 就是不适合。尤其是滚动,它不像普通浏览器那样工作,因此它会给使用动态加载的网站带来问题。可以使用带有 xfvb 的普通 Firefox 或 Chrome 来使其“无头”,但它很麻烦并且在应用升级时容易损坏。因此我希望使用 Headless Chromium。
标签: python selenium selenium-chromedriver chromium headless-browser