Ubuntu 20.04环境下Python Selenium调用Chrome报错‘chrome not reachable’及Crashpad权限问题求助
解决Ubuntu 20.04下Selenium Chrome 'chrome not reachable' 错误
从你提供的错误日志和命令行输出来看,核心问题是Chrome无法创建Crashpad崩溃报告目录(权限被拒绝),这直接导致Selenium无法与Chrome建立连接,最终抛出chrome not reachable异常。下面是分步解决方案:
1. 修复/tmp目录权限问题
Chrome需要在/tmp目录下创建Crashpad文件夹来存储崩溃日志,但当前你的/tmp目录或Crashpad子目录权限不足。执行以下步骤:
- 首先重置
/tmp目录的默认权限(正常应为1777,允许所有用户读写执行且只能删除自己的文件):sudo chmod 1777 /tmp - 如果
/tmp/Crashpad目录已经存在,先删除它避免权限残留:sudo rm -rf /tmp/Crashpad
2. 优化Selenium代码配置
你的代码中有几个参数需要调整,避免连接冲突和资源限制:
- 启用
--disable-dev-shm-usage:Ubuntu默认的/dev/shm共享内存空间很小,无头模式下Chrome容易因内存不足崩溃,这个参数会让Chrome使用临时文件替代共享内存。 - 移除
--remote-debugging-port=9222:除非你需要手动远程调试Chrome,这个参数会干扰Selenium的默认连接逻辑,导致会话无法建立。 - 使用
--headless=new:Chrome 112+推荐使用新的无头模式,稳定性比旧版--headless更好。 - 用
webdriver_manager自动管理chromedriver版本:避免手动指定路径导致的版本不匹配问题。
修改后的完整代码:
from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager def do_ss(): browser = None # 自动安装匹配当前Chrome版本的chromedriver service = Service(ChromeDriverManager().install()) options = Options() options.binary_location='/usr/bin/google-chrome' options.add_argument("--no-sandbox") options.add_argument("--disable-dev-shm-usage") options.add_argument("--headless=new") options.add_argument("--disable-gpu") # 兼容旧版Chrome的无头模式 try: browser = webdriver.Chrome(service=service, options=options) # 可添加测试访问验证,比如: # browser.get("https://www.google.com") # print("Page title:", browser.title) finally: # 确保无论是否报错都关闭浏览器 if browser: browser.quit() do_ss()
3. 验证Chrome独立启动是否正常
修复权限后,先在命令行单独启动Chrome,确认没有权限错误:
google-chrome --no-sandbox --headless=new --disable-dev-shm-usage
如果命令执行后没有报错,说明Chrome可以正常运行,再运行你的Selenium代码。
额外排查点
- 检查Chrome与chromedriver版本匹配:运行
google-chrome --version和chromedriver --version,确保两者大版本号一致(比如Chrome 124.x对应chromedriver 124.x)。 - 确认当前用户对Chrome安装目录(
/usr/bin/google-chrome)有执行权限。
内容的提问来源于stack exchange,提问作者user982599
相关产品推荐
相关产品推荐

