我正在尝试将headless chrome
与selenium
一起使用,我为chromedriver创建了一个符号链接到/ usr / local / bin,但是当我运行时
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument('--headless')
browser = webdriver.Chrome()
browser.get('http://www.google.com')
我收到错误
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/opt/anaconda2/envs/tensorflow/lib/python2.7/site-packages/selenium/webdriver/chrome/webdriver.py", line 69, in __init__
desired_capabilities=desired_capabilities)
File "/opt/anaconda2/envs/tensorflow/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 92, in __init__
self.start_session(desired_capabilities, browser_profile)
File "/opt/anaconda2/envs/tensorflow/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 179, in start_session
response = self.execute(Command.NEW_SESSION, capabilities)
File "/opt/anaconda2/envs/tensorflow/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 236, in execute
self.error_handler.check_response(response)
File "/opt/anaconda2/envs/tensorflow/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 192, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: crashed
(Driver info: chromedriver=2.30.477691 (6ee44a7247c639c0703f291d320bdf05c1531b57),platform=Linux 3.10.0-327.22.2.el7.x86_64 x86_64)
它还会生成一个核心。*****,一个带有五个随机数的核心文件点,大于200MB。
版本:
Selenium 3.0.0b3
Google Chrome 60.0.3112.113
chromedriver 2.30
有人可以帮我弄清楚出了什么问题吗?
答案 0 :(得分:1)
我无法让无头Chrome在Ubuntu 14.04上工作,但是它遇到了同样的unknown error: Chrome failed to start: crashed
错误,我将其追溯到Selenium驱动程序无视的依赖问题。
要诊断我尝试直接运行无头Chrome并获得:
$ google-chrome --headless "http://example.com"
NSS_VersionCheck("3.26") failed. NSS >= 3.26 is required.
这是libnss3
安装的内容:
$ dpkg -s libnss3
Package: libnss3
Version: 2:3.23-0ubuntu0.14.04.1
所以我切换到libnss3-dev
:
$ apt-get install libnss3-dev
$ dpkg -s libnss3
Package: libnss3
Version: 2:3.28.4-0ubuntu0.14.04.3
在命令行上重试:
$ google-chrome --headless "http://example.com"
$ echo $?
0
果然,一旦无头Chrome在命令行上工作,它也开始在Selenium工作。
这些是我目前使用的版本:
$ google-chrome --version
Google Chrome 62.0.3202.94
$ chromedriver --version
ChromeDriver 2.33.506092
$ $ pip freeze |grep selenium
selenium==3.7.0
答案 1 :(得分:1)
它在debian系统中对我有用。添加以下内容。
chrome_options.add_argument('--no-sandbox')
我在debian中安装了apt-get install -y chromium
。
答案 2 :(得分:0)
当您尝试在无头模式下打开Chrome浏览器时,您无需创建任何额外设置或符号链接。将chromedriver
保存/存储在系统的任何位置,并按绝对路径访问该位置。要包含参数 --headless
,您需要获取 Options
类的帮助,并在初始化 webdriver
时传递该对象对象如下:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument("start-maximized")
options.add_argument("disable-infobars")
options.add_argument("--disable-extensions")
options.add_argument('--headless')
driver = webdriver.Chrome(chrome_options=options, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
driver.get('https://www.google.co.in')
print("Page Title is : %s" %driver.title)
driver.quit()
控制台输出:
Page Title is : Google
答案 3 :(得分:0)
我在centos7.1上遇到了同样的问题,因为我是root用户,并在添加代码chrome_options.add_argument('--no-sandbox')
这是我的代码
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--headless')
driver = webdriver.Chrome(chrome_options=chrome_options)
driver.get('https://www.google.com/')
print driver.current_url
driver.quit()