Jenkins运行Java+Selenium+TestNG自动化测试时无法找到Chrome浏览器的解决办法
Jenkins中Selenium ChromeDriver无法启动Chrome的解决方案
问题情况
本地IDE运行Java+Selenium+TestNG的自动化测试(比如获取google.com页面标题)完全正常,代码托管到Git后Jenkins能正常启动并编译项目,简单打印方法也能执行,ChromeDriver能启动,但出现报错:
"从路径/usr/bin/google-chrome启动的进程已停止运行,ChromeDriver认为Chrome已崩溃。"
已确认Chrome浏览器和ChromeDriver版本匹配,推测是WebDriver找不到正确的Chrome路径或运行环境存在问题。
解决方法
1. 显式指定Chrome的实际路径
在初始化ChromeDriver时,通过ChromeOptions指定Chrome的真实可执行文件路径。示例代码:
ChromeOptions options = new ChromeOptions(); // 先通过服务器命令`which google-chrome-stable`确认真实路径,再替换此处 options.setBinary("/usr/bin/google-chrome-stable"); WebDriver driver = new ChromeDriver(options);
注:有时候/usr/bin/google-chrome只是软链接,实际可执行文件可能是google-chrome-stable,得先在服务器上确认真实路径。
2. 开启Chrome无头模式并添加必要参数
Jenkins一般在无桌面环境下运行,必须启用无头模式,否则Chrome会因缺少GUI崩溃。在代码中添加以下参数:
options.addArguments("--headless=new"); options.addArguments("--no-sandbox"); options.addArguments("--disable-dev-shm-usage"); options.addArguments("--disable-gpu");
各参数作用:
--headless=new:新版无头模式,行为更接近正常浏览器--no-sandbox:禁用沙箱,避免权限不足问题--disable-dev-shm-usage:解决Linux系统下临时空间不足的问题--disable-gpu:无头模式不需要GPU加速,直接禁用
3. 检查Jenkins用户的权限
确保Jenkins运行的用户(默认是jenkins用户)能访问Chrome可执行文件:
# 给Chrome可执行文件添加执行权限 sudo chmod +x /usr/bin/google-chrome-stable # 把jenkins用户加入sudo组(视实际情况选择是否执行) sudo usermod -aG sudo jenkins
也可以直接测试jenkins用户能否启动Chrome:
sudo -u jenkins google-chrome-stable --headless=new --dump-dom https://google.com
如果这步执行失败,说明权限或路径肯定存在问题。
4. 再次核对版本兼容性
虽然你已确认版本匹配,还是再检查一遍:
- 查看Chrome版本:
google-chrome-stable --version - 查看ChromeDriver版本:
chromedriver --version
要保证ChromeDriver的大版本和Chrome一致,比如Chrome是114.x系列,ChromeDriver也要是114.x.x.x系列。
内容的提问来源于stack exchange,提问作者Sanich
相关产品推荐
相关产品推荐

