Jenkins运行Selenium测试报错:WebDriver连接拒绝/浏览器崩溃求助
这种在本地IDE跑Selenium测试完全正常,一到Jenkins上就卡壳的情况真的太常见了,我来给你梳理几个大概率能解决问题的排查方向:
1. 先确认Jenkins节点的浏览器&驱动匹配度
- 首先要确保Jenkins所在机器(不管是master还是slave节点)已经安装了对应版本的Chrome/Firefox浏览器,驱动版本必须和浏览器版本严格对应——本地你可能同步更新了驱动,但Jenkins机器上的驱动大概率还是旧的,这是最容易踩的坑,直接会导致连接失败。
- 要么把驱动路径加到系统环境变量
PATH里,要么在代码里直接指定驱动的绝对路径,比如:// Linux环境示例 System.setProperty("webdriver.chrome.driver", "/usr/local/bin/chromedriver"); // Windows环境示例 System.setProperty("webdriver.chrome.driver", "C:\\tools\\chromedriver.exe");
2. 一定要启用无头模式
Jenkins节点基本都是无图形界面的服务器环境,浏览器没法正常启动图形会话,必须强制开启无头模式:
- Chrome无头模式配置示例:
ChromeOptions options = new ChromeOptions(); options.addArguments("--headless=new"); options.addArguments("--no-sandbox"); // Linux环境必备,规避权限问题 options.addArguments("--disable-dev-shm-usage"); // 解决Linux下内存不足问题 WebDriver driver = new ChromeDriver(options); - Firefox无头模式配置示例:
FirefoxOptions options = new FirefoxOptions(); options.addArguments("--headless"); WebDriver driver = new FirefoxDriver(options);
3. 检查防火墙与端口占用情况
- Jenkins节点的防火墙可能拦截了Selenium驱动和浏览器之间的通信,要确保驱动和浏览器交互的端口(通常是随机端口,也可以手动指定)没有被防火墙封禁。
- 可以在Jenkins机器上用命令排查端口状态:
Linux用netstat -tulpn,Windows用netstat -ano,看看有没有端口被占用或者无法访问的情况。
4. 验证Jenkins运行用户的权限
- Jenkins服务一般是用专用用户(比如
jenkins用户)运行的,这个用户可能没有权限启动浏览器或者访问驱动文件。你可以切换到jenkins用户手动测试:
如果提示权限不足,给驱动文件加可执行权限就行:su jenkins ./chromedriver --versionchmod +x /path/to/chromedriver
5. 延长超时+开启详细日志排查
- 你的报错超时时间是66秒,可能是Jenkins机器性能不足导致浏览器启动太慢,试试在
beforeClass里延长驱动初始化的超时时间。 - 开启Selenium的DEBUG级日志,比如在代码里配置日志级别,或者在Jenkins构建中添加环境变量
SELENIUM_LOG_LEVEL=DEBUG,这样能看到更详细的连接失败细节,方便精准定位问题。
内容的提问来源于stack exchange,提问作者user249094
相关产品推荐
相关产品推荐

