Mac环境下Jenkins+Maven+TestNG+Selenium WebDriver测试连接拒绝问题
解决Jenkins运行Selenium测试时出现的connection refused问题
我来帮你排查这个困扰你的问题——本地Eclipse能正常跑TestNG测试套件,但Jenkins一跑就报org.openqa.selenium.WebDriverException: connection refused,核心原因几乎都是Jenkins环境与本地开发环境的配置/权限差异导致的,咱们一步步来解决:
1. 优先排查Geckodriver的路径问题
你代码里写的Geckodriver路径是"//eclipse- Oxygen/aaa/src/test/java/aa/aaa/geckodriver 4",这个路径是基于你本地Eclipse的工作目录,但Jenkins有自己独立的工作空间(通常在/Users/Shared/Jenkins/Home/workspace/你的项目名/下),根本找不到这个路径!
解决办法:
- 用动态路径替代硬编码:把Geckodriver放到项目的
src/test/resources目录下,然后通过项目根目录动态拼接路径,这样Eclipse和Jenkins都能识别:
// 获取项目根目录 String projectRoot = System.getProperty("user.dir"); // 拼接Geckodriver路径(注意去掉文件名里的空格,避免解析错误) String geckoPath = projectRoot + "/src/test/resources/geckodriver"; System.setProperty("webdriver.gecko.driver", geckoPath);
- 重命名Geckodriver:你的Geckodriver文件名带空格(
geckodriver 4),很容易导致路径解析失败,建议改成geckodriver_v4这类无空格的名称。
2. 检查Jenkins的权限与Firefox访问问题
Mac上的Jenkins默认是以jenkins系统用户运行的,这个用户可能没有权限访问Firefox或者执行Geckodriver:
- 给Geckodriver加执行权限:在终端里执行
chmod +x /path/to/your/geckodriver,确保它能被Jenkins用户执行。 - 验证Firefox路径的可访问性:在Jenkins的"执行shell"步骤里加一行
ls /Applications/Firefox.app/Contents/MacOS/firefox-bin,看看Jenkins能不能找到这个文件。如果找不到,可能需要确认Firefox的安装路径是否正确,或者给Jenkins用户授权访问应用目录。
3. 配置Firefox无头模式(关键!)
Jenkins通常运行在无桌面的环境下,而Selenium启动Firefox需要桌面会话,这会直接导致连接失败。必须配置Firefox以无头模式运行:
// 用FirefoxOptions替代DesiredCapabilities(更推荐,DesiredCapabilities已逐步被淘汰) FirefoxOptions options = new FirefoxOptions(); options.setBinary("/Applications/Firefox.app/Contents/MacOS/firefox-bin"); // 添加无头参数 options.addArguments("--headless"); options.addArguments("--disable-gpu"); // 针对Mac/Linux的兼容参数 // 保留你的原有配置 options.setAcceptInsecureCerts(true); options.setJavascriptEnabled(true); // 初始化Driver driver = new FirefoxDriver(options); driver.get("https://www.google.com");
4. 验证Geckodriver与Firefox的版本兼容性
如果上面的步骤都没解决,检查一下Geckodriver和Firefox的版本是否匹配:
- 比如Firefox 115+需要Geckodriver 0.33.0及以上版本,版本不兼容会直接导致Driver无法连接浏览器。你可以确认两者版本对应关系后,更新到匹配的版本。
按照这个顺序排查,大概率能解决你的问题!
内容的提问来源于stack exchange,提问作者user3108630
相关产品推荐
相关产品推荐

