Ubuntu Jenkins环境下Selenium无法加载预设Chrome配置文件求助
解决方案
1. 修复目录权限问题
Jenkins默认以jenkins用户运行,而你手动测试用的是tester用户,可能存在目录权限不足导致无法删除devtools_port文件的情况:
- 切换到tester用户,执行命令赋予Jenkins用户读写权限:
或者如果不想变更所有者,可调整目录权限并将Jenkins加入tester用户组:sudo chown -R jenkins:jenkins /home/tester/selenium/google-chromesudo chmod -R 775 /home/tester/selenium/google-chrome sudo usermod -aG tester jenkins
2. 预清理残留的devtools_port文件
即使没有Chrome进程,异常退出可能留下devtools_port文件,导致Selenium启动失败。在Python代码中添加预处理逻辑:
import os user_data_dir = "/home/tester/selenium/google-chrome" devtools_port_file = os.path.join(user_data_dir, "devtools_port") # 检查并删除残留的devtools端口文件 if os.path.exists(devtools_port_file): os.remove(devtools_port_file)
3. 正确配置ChromeOptions(含无痕模式)
加载指定配置文件的同时启用无痕模式,需同时添加--incognito参数,配合其他优化参数避免冲突:
from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options = Options() # 指定用户数据目录和目标配置文件 chrome_options.add_argument("--user-data-dir=/home/tester/selenium/google-chrome") chrome_options.add_argument("--profile-directory=Norton") # 启用无痕模式 chrome_options.add_argument("--incognito") # 禁用首次运行检查和默认浏览器提示 chrome_options.add_argument("--no-first-run") chrome_options.add_argument("--no-default-browser-check") # Ubuntu环境下避免/dev/shm空间不足问题 chrome_options.add_argument("--disable-dev-shm-usage") # 让Chrome自动分配调试端口,避免端口冲突 chrome_options.add_argument("--remote-debugging-port=0") # 若需无头模式,取消以下注释 # chrome_options.add_argument("--headless=new") # chrome_options.add_argument("--disable-gpu") driver = webdriver.Chrome(options=chrome_options)
4. Jenkins构建前强制清理残留进程
在Jenkins的构建步骤中,添加前置命令确保无残留Chrome进程:
pkill -f "chrome" || true pkill -f "chromium" || true
5. 校验ChromeDriver与Chrome版本兼容性
确保ChromeDriver的版本和你安装的Chrome版本完全匹配(大版本一致,小版本尽量接近),可通过google-chrome --version查看Chrome版本,然后下载对应版本的ChromeDriver替换现有版本。
内容的提问来源于stack exchange,提问作者Romero Gomez
相关产品推荐
相关产品推荐

