求助:Chrome更新后Ubuntu无GUI环境Selenium脚本报DevToolsActivePort不存在
修复DevToolsActivePort文件不存在问题的方案
确保Chrome与Chromedriver版本完全匹配
Chrome更新后版本会变化,Chromedriver必须和Chrome主版本号一致才能正常工作:- 执行命令查看当前Chrome版本:
google-chrome --version - 下载对应版本的Chromedriver(选择适配Linux的版本)
- 替换原有的Chromedriver文件,并赋予执行权限:
chmod +x /path/to/your/chromedriver
- 执行命令查看当前Chrome版本:
补充无GUI模式的必要启动参数
仅加--no-sandbox可能不够,需要配置完整的无GUI启动参数,示例Python代码如下:from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options = Options() # 启用新版无头模式,避免旧模式兼容性问题 chrome_options.add_argument("--headless=new") chrome_options.add_argument("--no-sandbox") # 解决/dev/shm空间不足问题 chrome_options.add_argument("--disable-dev-shm-usage") # 指定调试端口,避免端口冲突或DevTools连接异常 chrome_options.add_argument("--remote-debugging-port=9222") # 自定义用户数据目录,避免权限或临时文件异常 chrome_options.add_argument("--user-data-dir=/tmp/chrome-user-data") chrome_options.add_argument("--disable-gpu") chrome_options.add_argument("--window-size=1920,1080") driver = webdriver.Chrome(options=chrome_options)检查文件与目录权限
- 确认运行脚本的用户对Chromedriver文件、Chrome安装目录有可执行权限:
ls -l /path/to/chromedriver、ls -l /usr/bin/google-chrome - 检查/tmp目录的权限和可用空间:
df -h /tmp查看剩余空间,ls -ld /tmp确认权限(正常应为drwxrwxrwt) - 如果/tmp存在问题,可在ChromeOptions中指定自定义临时目录:
chrome_options.add_argument("--temp-dir=/path/to/custom-temp"),需确保该目录已创建且有读写权限
- 确认运行脚本的用户对Chromedriver文件、Chrome安装目录有可执行权限:
清理残留进程
Chrome更新后可能残留旧进程,导致端口或资源占用:
执行命令杀掉所有相关进程:pkill -f chrome pkill -f chromedriver之后重新运行脚本
指定Chrome二进制文件路径
部分情况下,Chrome更新后安装路径可能变化,需手动指定:
在ChromeOptions中添加:chrome_options.binary_location = "/usr/bin/google-chrome"可通过
which google-chrome命令确认实际路径
内容的提问来源于stack exchange,提问作者VKX
相关产品推荐
相关产品推荐

