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

2024-05-23 18:15:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用Chromium和Selenium/ChromeDriver的新版本(2016年)(在过去,我使用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)

同样的代码也适用于标准chromium(如果我删除了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

Tags: 文件代码fromimport版本selenium二进制chrome
1条回答
网友
1楼 · 发布于 2024-05-23 18:15:44

ChromeHeadless自this patch(在发布消息后创建)起就被chromedriver识别,该版本仅在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')

至于无头Chrome的预构建二进制文件——自从Chrome 57以来,这个选项就可用了,所以目前通过Google官方存储库发布的所有版本都支持这个选项(即稳定的Chrome 58和不稳定的Chrome 59)。它是Chrome 59的亮点,所以在特征稳定之前,需要一些粗糙的边。

相关问题 更多 >