You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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 --version
    
    如果提示权限不足,给驱动文件加可执行权限就行:chmod +x /path/to/chromedriver
5. 延长超时+开启详细日志排查
  • 你的报错超时时间是66秒,可能是Jenkins机器性能不足导致浏览器启动太慢,试试在beforeClass里延长驱动初始化的超时时间。
  • 开启Selenium的DEBUG级日志,比如在代码里配置日志级别,或者在Jenkins构建中添加环境变量SELENIUM_LOG_LEVEL=DEBUG,这样能看到更详细的连接失败细节,方便精准定位问题。

内容的提问来源于stack exchange,提问作者user249094

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:45:10