我试图将新的(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选件)
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的亮点,因此可以期待一些粗糙的边缘,直到功能稳定为止。