Ubuntu VPS中Selenium ChromeDriver提示Chrome崩溃问题求助
ChromeDriver判定Chrome已崩溃问题排查(Ubuntu VPS环境)
错误信息
The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.
代码实现
from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.by import By import os import time class VannilaBotV1(webdriver.Chrome): def __init__(self, driver_path=webdriver.Chrome): self.driver_path = driver_path options = Options() prefs = { "translate_whitelists": {"it": "en"}, "translate": {"enabled": "true"} } # options.add_experimental_option("prefs", prefs) options.add_argument('--headless') options.add_argument("--no-sandbox") extension_path = os.path.join("./extensions/hcaptcha_extension.crx") options.add_extension(extension_path) super(VannilaBotV1, self).__init__(options=options) self.set_window_size(1040, 1440)
环境与排查信息
- 运行环境:Ubuntu VPS(本地运行正常)
- Chrome路径:
/usr/bin/google-chrome - Chrome版本:Google Chrome 126.0.6478.61
- 已执行排查步骤:
- 确认Chrome可通过指定路径正常访问
- 验证ChromeDriver与Chrome版本兼容
- 添加
--no-sandbox启动参数 - 关闭headless模式后问题仍存在
解决方案建议
排查扩展兼容性问题
先移除options.add_extension(extension_path)代码,测试Chrome是否能正常启动。如果启动正常,说明加载的hcaptcha_extension.crx在Ubuntu环境下存在适配问题,需单独检查扩展版本是否匹配当前Chrome,或是否需要调整扩展在无桌面环境下的运行配置。补充无桌面环境适配参数
Ubuntu VPS无图形界面,除--no-sandbox外,添加以下参数优化启动:options.add_argument('--disable-dev-shm-usage') # 解决/dev/shm内存不足导致的崩溃 options.add_argument('--disable-gpu') # 无桌面环境下禁用GPU加速 options.add_argument('--window-size=1040,1440') # 直接在options中设置窗口尺寸,避免启动后调整的异常 options.add_argument('--remote-debugging-port=9222') # 启用远程调试,辅助排查启动故障显式指定Chrome二进制路径
确保ChromeDriver能精准定位可执行文件,在options中添加:options.binary_location = "/usr/bin/google-chrome"检查VPS资源限制
用free -h查看内存使用,top查看CPU负载。Chrome启动需要足够资源,若内存不足,可通过添加Swap分区或升级VPS配置解决。启用Chrome日志定位崩溃原因
添加日志参数获取启动细节:options.add_argument('--enable-logging') options.add_argument('--v=1') # 日志级别,数值越高信息越详细运行后查看日志输出,定位具体崩溃触发点。
用webdriver-manager自动管理驱动
手动维护ChromeDriver易出现版本匹配问题,改用自动管理工具:
先安装依赖:pip install webdriver-manager修改代码初始化部分:
from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.chrome.service import Service # 替换原super初始化代码 super(VannilaBotV1, self).__init__(service=Service(ChromeDriverManager().install()), options=options)
内容的提问来源于stack exchange,提问作者Sakib ovi
相关产品推荐
相关产品推荐

