【问题标题】:WebDriverException: Message: unknown error: Chrome failed to start: crashedWebDriverException:消息:未知错误:Chrome 无法启动:崩溃
【发布时间】:2018-02-07 19:42:27
【问题描述】:

我正在尝试将headless chromeselenium 一起使用,我为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)

还生成一个core.*****,一个带有五个随机数的core文件点,大小超过200MB。

版本:

Selenium 3.0.0b3 
Google Chrome 60.0.3112.113  
chromedriver 2.30

谁能帮我找出问题所在?

【问题讨论】:

标签: python google-chrome selenium centos7 headless


【解决方案1】:

因为我是root用户,在centos7.1上遇到同样的问题,添加代码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()

【讨论】:

    【解决方案2】:

    我在让无头 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
    

    【讨论】:

      【解决方案3】:

      它适用于我在 debian 系统中。添加以下内容。

      chrome_options.add_argument('--no-sandbox')

      我在 debian 中安装了apt-get install -y chromium

      【讨论】:

        【解决方案4】:

        当您尝试以无头模式打开 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
        

        【讨论】:

        • 我遇到了同样的错误,当我初始化webdriver时,出现了错误。
        • @DannyHuang 你能用你当前的代码块以及完整的错误堆栈和你的 Selenium、chromedriver 和 Chrome 版本更新问题吗?
        • 我使用了您建议的代码进行测试,并在我刚刚更新时得到了错误堆栈。
        猜你喜欢
        • 2019-08-01
        • 2014-10-08
        • 2020-05-21
        • 2023-01-19
        • 2022-12-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多