我正在尝试使用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编译的。救命!!
环境:
ChromeHeadless自this patch(在发布消息后创建)起就被chromedriver识别,该版本仅在chromedriver 2.29(2017年4月发布)之后才可用。确保您在PATH中有这个chromedriver可执行文件,并且Selenium正在选择它,而不是您可能拥有的任何其他chromedriver。
另外,请注意-根据headless Chrome documentation-您还需要传递两个标志:
至于无头Chrome的预构建二进制文件——自从Chrome 57以来,这个选项就可用了,所以目前通过Google官方存储库发布的所有版本都支持这个选项(即稳定的Chrome 58和不稳定的Chrome 59)。它是Chrome 59的亮点,所以在特征稳定之前,需要一些粗糙的边。
相关问题 更多 >
编程相关推荐