Ubuntu下Selenium调用ChromeDriver启动异常问题求助
解决ChromeDriver启动异常(exited abnormally)的方案
先梳理下你目前的情况:已经安装了Selenium和ChromeDriver,尝试了指定路径、virtualenv、设置777权限,但调用webdriver.Chrome()时还是报错Chrome异常退出,且当前有两个Chrome窗口在运行。结合你的报错信息和环境配置,给你几个针对性的解决思路:
1. 先解决版本不匹配的潜在问题
从你的环境信息看,存在两个关键矛盾点:
- 实际系统中的ChromeDriver版本是2.35,但pip安装的
chromedriver包是2.24.1,这个第三方封装包和你直接安装的ChromeDriver存在冲突,建议先卸载它:pip uninstall chromedriver -y - ChromeDriver和Chrome浏览器版本必须严格对应!ChromeDriver 2.35仅支持Chrome 62-64版本,如果你当前的Chrome版本高于64或者低于62,肯定会启动失败。先检查你的Chrome版本:
如果版本不匹配,下载对应版本的ChromeDriver替换掉当前的google-chrome --version/usr/bin/chromedriver,替换后记得重新设置权限:chmod 777 /usr/bin/chromedriver
2. 处理已有Chrome窗口的冲突
当已有Chrome实例运行时,webdriver默认会尝试使用当前用户数据目录,容易导致锁死或资源冲突。可以通过两种方式解决:
- 方式一:关闭所有Chrome窗口并清理残留进程后再启动webdriver:
pkill chrome - 方式二:在启动webdriver时指定一个独立的用户数据目录,避免和现有实例冲突:
from selenium import webdriver options = webdriver.ChromeOptions() # 指定一个临时目录作为独立用户数据目录 options.add_argument('--user-data-dir=/tmp/chrome_test_profile') d = webdriver.Chrome(options=options)
3. 添加Linux环境下的必要启动参数
在Linux(尤其是root用户)运行ChromeDriver时,需要添加几个关键参数来规避沙箱和内存共享的问题,这是非常常见的坑:
from selenium import webdriver options = webdriver.ChromeOptions() # 禁用沙箱模式,root用户必须添加此参数 options.add_argument('--no-sandbox') # 禁用/dev/shm的使用,避免内存不足导致的异常 options.add_argument('--disable-dev-shm-usage') # 可选:如果不需要可视化界面,启用无头模式 options.add_argument('--headless') # 可选:禁用GPU加速,避免部分环境下的显卡兼容问题 options.add_argument('--disable-gpu') d = webdriver.Chrome(options=options)
4. 验证ChromeDriver本身的可用性
先单独运行ChromeDriver,确认驱动本身能正常启动,排除文件损坏的问题:
chromedriver
如果能输出类似Starting ChromeDriver 2.35.528139 on port 9515的信息,说明驱动本身没问题;如果启动失败,重新下载对应版本的驱动即可。
内容的提问来源于stack exchange,提问作者Ary
相关产品推荐
相关产品推荐

