Python Selenium启动Chrome报Chrome failed to start exited abnormally错误如何解决
问题解决方案
报错根因
DevToolsActivePort file doesn't exist报错基本都是Chrome启动参数不兼容、版本不匹配或者运行环境缺失导致的,按以下步骤逐一排查即可解决:
排查&修复步骤
- 版本匹配校验
先执行以下两条命令确认Chrome和ChromeDriver大版本完全一致,版本差一位都会启动失败:
版本不匹配的话,下载对应版本的ChromeDriver替换/tmp下的文件即可。# 查看Chromium版本 /usr/bin/chromium-browser --version # 查看ChromeDriver版本 /tmp/chromedriver/chromedriver --version - 修正headless启动参数
112及以上版本的Chrome/Chromium已经废弃了旧的headless模式,将原参数--headless替换为--headless=new,适配新版浏览器的无头模式。 - 补充缺失启动参数
额外添加以下两个参数避免环境兼容问题:
部分Linux环境还可以补充--disable-gpu --remote-debugging-port=9222--no-zygote参数解决进程启动异常问题。 - 手动指定Chrome二进制路径(可选)
如果系统存在多个浏览器版本,可手动指定启动路径避免找错程序:chrome_options.binary_location = "/usr/bin/chromium-browser" - 权限校验
先给ChromeDriver加执行权限,同时提前创建下载目录并开放读写权限:chmod +x /tmp/chromedriver/chromedriver mkdir -p /tmp/chrome_downloads chmod 755 /tmp/chrome_downloads
修正后的完整代码
from selenium import webdriver from selenium.webdriver.chrome.service import Service def create_selenium_driver(): chrome_options = webdriver.ChromeOptions() # 基础兼容参数 chrome_options.add_argument('--no-sandbox') chrome_options.add_argument('--headless=new') # 替换为新版headless参数 chrome_options.add_argument('--disable-dev-shm-usage') chrome_options.add_argument('--disable-gpu') chrome_options.add_argument('--remote-debugging-port=9222') # 手动指定Chromium路径,避免找错程序 chrome_options.binary_location = "/usr/bin/chromium-browser" # 下载配置 prefs = {"download.default_directory" : "/tmp/chrome_downloads/", 'profile.default_content_setting_values.automatic_downloads': 1} chrome_options.add_experimental_option("prefs",prefs) chrome_driver = "/tmp/chromedriver/chromedriver" s = Service(chrome_driver) driver = webdriver.Chrome(service=s, options=chrome_options) return driver
内容的提问来源于stack exchange,提问作者Felipe FB
相关产品推荐
相关产品推荐

