首页 > 解决方案 > Selenium 无法识别 Chrome 二进制文件,Chrome 已崩溃

问题描述

我正在尝试用 chrome 运行 Selenium

我测试了这个问题:WebDriverException: unknown error: cannot find Chrome binary error with Selenium in Python for old version of Google Chrome

但它会产生错误:找不到 Chrome 二进制文件

我测试了这个问题:Selenium: WebDriverException:Chrome failed to start: crashed as google-chrome is no longer running so ChromeDriver is假设Chrome已经崩溃

但它会产生错误:Chrome 已崩溃

机器:Ubuntu 16 & Python 3.4

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.binary_location = "/usr/local/bin/chromedriver"
options.add_argument("--start-maximized")
options.add_argument("--no-sandbox")
options.add_argument("--disable-dev-shm-usage")
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
driver = webdriver.Chrome(options=options, executable_path=r'/usr/local/bin/chromedriver')
driver.get('http://google.com/')

输出

Traceback (most recent call last):
  File "testdrive.py", line 11, in <module>
    driver = webdriver.Chrome(options=options, executable_path=r'/usr/local/bin/chromedriver')
  File "/usr/local/lib/python3.4/site-packages/selenium/webdriver/chrome/webdriver.py", line 81, in __init__
    desired_capabilities=desired_capabilities)
  File "/usr/local/lib/python3.4/site-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
    self.start_session(capabilities, browser_profile)
  File "/usr/local/lib/python3.4/site-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/usr/local/lib/python3.4/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python3.4/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally.
  (unknown error: DevToolsActivePort file doesn't exist)
  (The process started from chrome location /usr/local/bin/chromedriver is no longer running, so ChromeDriver is assuming that Chrome has crashed.)

有人能帮我吗?

标签: seleniumgoogle-chromeselenium-webdriverselenium-chromedriver

解决方案


自动下载安装支持当前安装的chrome版本的chromedriver。此安装程序支持 Linux、MacOS 和 Windows 操作系统。

安装

pip install chromedriver-autoinstaller

用法

只需chromedriver_autoinstaller在要使用的模块中输入 import 即可chromedriver

例子

from selenium import webdriver
import chromedriver_autoinstaller


chromedriver_autoinstaller.install()  # Check if the current version of chromedriver exists
                                      # and if it doesn't exist, download it automatically,
                                      # then add chromedriver to path

driver = webdriver.Chrome()
driver.get("http://www.python.org")
assert "Python" in driver.title

推荐阅读