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

WebDriverManager的browserInDocker函数问题:CI/CD环境防火墙致驱动获取失败

解决WebDriverManager因防火墙阻断无法访问外部库的问题

我用WebDriverManager已有一年多,近期将CI/CD迁移至新工具后,新增防火墙阻断了外部库访问。尝试以下两段代码均未成功:

WebDriverManager.firefoxdriver().browserInDocker().create();
WebDriverManager.firefoxdriver().browserInDocker().linux().setup();

(注:原代码中setup(存在语法错误,已修正为setup();)

报错信息如下:

io.github.bonigarcia.wdm.config.WebDriverManagerException: io.github.bonigarcia.wdm.config.WebDriverManagerException: org.apache.hc.client5.http.ConnectTimeoutException: Connect to https://msedgedriver.azureedge.net:443 [msedgedriver.azureedge.net/13.107.246.38, msedgedriver.azureedge.net/13.107.213.38] failed: Read timed out
  at io.github.bonigarcia.wdm.WebDriverManager.handleException(WebDriverManager.java:809)
  at io.github.bonigarcia.wdm.WebDriverManager.manage(WebDriverManager.java:599)
  at io.github.bonigarcia.wdm.WebDriverManager.fallback(WebDriverManager.java:825)
  at io.github.bonigarcia.wdm.WebDriverManager.handleException(WebDriverManager.java:806)
  at io.github.bonigarcia.wdm.WebDriverManager.manage(WebDriverManager.java:599)
  at io.github.bonigarcia.wdm.WebDriverManager.handleException(WebDriverManager.java:799)
  at io.github.bonigarcia.wdm.WebDriverManager.manage(WebDriverManager.java:599)
  at io.github.bonigarcia.wdm.WebDriverManager.setup(WebDriverManager.java:287)

需要迁移的驱动文件

从代码和报错信息来看,需准备以下驱动:

  • GeckoDriver:对应Docker中使用的Firefox版本,选择Linux系统的可执行文件
  • msedgedriver:报错中出现Edge驱动的请求,说明测试环境涉及Edge浏览器,需同步准备Linux版本的Edge驱动
  • 如果还有Chrome等其他浏览器测试,需补充对应系统的chromedriver等

配置WebDriverManager使用本地驱动

  1. 将下载好的驱动文件放到构建仓库的指定目录,比如src/test/resources/drivers/linux/,并给Linux下的驱动添加执行权限:chmod +x geckodriver msedgedriver
  2. 在代码中指定本地驱动路径,示例:
// Firefox + Docker 配置本地驱动
WebDriverManager.firefoxdriver()
    .browserInDocker()
    .linux()
    .driverPath("/build/repo/path/src/test/resources/drivers/linux/geckodriver")
    .setup();

// 如果涉及Edge,同理配置
WebDriverManager.edgedriver()
    .browserInDocker()
    .linux()
    .driverPath("/build/repo/path/src/test/resources/drivers/linux/msedgedriver")
    .setup();

或者通过系统属性直接指定:

System.setProperty("webdriver.gecko.driver", "/build/repo/path/src/test/resources/drivers/linux/geckodriver");
WebDriver driver = new FirefoxDriver();

额外注意事项

  • 驱动版本必须与Docker中运行的浏览器版本严格匹配,避免兼容性问题
  • 若使用自定义Docker镜像,可将驱动文件直接打包进镜像,避免每次构建时的路径配置
  • 确保CI/CD环境有权限访问构建仓库中的驱动文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 07:35:18