Jenkins流水线执行Selenium测试报错:无法找到Chrome二进制文件
排查思路与解决方法
一、先确认Chrome浏览器是否安装及路径问题
- 在CentOS服务器执行
which google-chrome,无输出说明未安装Chrome,按对应版本安装:- CentOS7:
sudo yum install https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm - CentOS8/Stream:
sudo dnf install https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm
- CentOS7:
- 若有输出(如
/usr/bin/google-chrome),需在Selenium代码中同时指定ChromeDriver和Chrome二进制文件路径,示例Java代码:System.setProperty("webdriver.chrome.driver", "/opt/chromedriver"); ChromeOptions options = new ChromeOptions(); options.setBinary("/usr/bin/google-chrome"); // 替换为实际查到的路径 WebDriver driver = new ChromeDriver(options);
二、验证ChromeDriver与Chrome版本兼容性
- 执行
/opt/chromedriver --version获取驱动版本,google-chrome --version获取浏览器版本:- 两者必须大版本完全匹配(如Chrome 114.x对应ChromeDriver 114.x),跨大版本必然不兼容。
- 版本不匹配时,下载对应版本ChromeDriver替换
/opt/chromedriver,并添加执行权限:sudo chmod +x /opt/chromedriver
三、Jenkins运行权限排查
- Jenkins默认以
jenkins用户运行,需确保该用户能访问Chrome及驱动:- 检查Chrome路径权限:
ls -l /usr/bin/google-chrome,确保其他用户有执行权限(权限位最后一位为x),无权限则执行sudo chmod o+x /usr/bin/google-chrome - 检查驱动路径权限:
ls -l /opt/chromedriver,添加执行权限:sudo chmod +x /opt/chromedriver - 在Jenkins构建脚本中执行
whoami确认运行用户,再切换到该用户测试Chrome启动:sudo -u jenkins google-chrome --headless --no-sandbox --disable-gpu,无报错则权限正常
- 检查Chrome路径权限:
四、无头模式配置
- 服务器无图形界面,必须启用无头模式,代码中添加参数:
ChromeOptions options = new ChromeOptions(); options.addArguments("--headless=new"); // 新版无头模式更稳定 options.addArguments("--no-sandbox"); // 服务器环境必备参数 options.addArguments("--disable-gpu"); // 无桌面环境无需GPU加速 options.addArguments("--disable-dev-shm-usage"); // 解决/dev/shm空间不足问题
五、依赖库缺失排查
- 执行
ldd /usr/bin/google-chrome | grep not found,查看是否有缺失的依赖库(如libXss.so.1),用yum安装对应包(示例:sudo yum install libXss.x86_64)
内容的提问来源于stack exchange,提问作者user1999453
相关产品推荐
相关产品推荐

