You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何配置Selenium-Jupiter与WebDriverManager仅使用本地浏览器/驱动程序(CI/CD场景)

如何配置Selenium-Jupiter与WebDriverManager仅使用本地浏览器/驱动程序(CI/CD场景)

我完全理解你在CI/CD环境下的需求——不想让WebDriverManager自动联网拉取浏览器或驱动程序,而是要完全管控,只用代码仓库里预存的指定版本,彻底避开系统自带的浏览器对吧?下面给你一套完整的配置方案,能彻底禁用联网请求,强制使用本地资源:

1. 核心:禁用WebDriverManager的在线功能

这是最关键的一步,能直接阻止WebDriverManager尝试联网检查版本或下载资源。你可以通过两种方式配置:

方式一:JVM启动参数(CI/CD场景推荐)

在你的CI/CD构建脚本里,给测试任务添加以下JVM参数:

-Dwdm.online=false -Dwdm.check-for-updates=false

方式二:代码内配置

如果你需要在测试代码里硬编码配置,可以在初始化WebDriverManager时设置:

WebDriverManager.chromedriver()
        .online(false) // 彻底禁用联网
        .checkForUpdates(false); // 关闭更新检查

2. 指定本地驱动程序的路径

把你存在SCM里的驱动文件(比如chromedriver、geckodriver)放在项目的固定目录下,然后告诉WebDriverManager去这个目录找:

方式一:JVM参数

-Dwdm.driver.path=src/test/resources/drivers/

(路径根据你实际存放的位置调整,CI环境里建议使用绝对路径,比如/opt/test-resources/drivers/

方式二:代码内配置

WebDriverManager.chromedriver()
        .driverPath("src/test/resources/drivers/")
        .setup();

3. 指定本地浏览器的可执行文件

要强制使用你预存的浏览器版本,而不是系统默认安装的,需要给WebDriver设置浏览器路径。结合Selenium-Jupiter的话,有几种灵活的方式:

方式一:全局扩展配置

在测试类里注册SeleniumJupiter扩展时,统一配置浏览器路径:

@RegisterExtension
static SeleniumJupiter seleniumJupiter = new SeleniumJupiter()
        // 配置Chrome本地路径(Windows/macOS/Linux路径格式对应调整)
        .configureChrome(options -> options.setBinary("src/test/resources/browsers/chrome/chrome.exe"))
        // 同时配置WebDriverManager的本地驱动和离线模式
        .configureDriverManager(dm -> dm.online(false).driverPath("src/test/resources/drivers/"));

方式二:测试方法注解指定

如果不同测试用例需要不同浏览器版本,可以直接在注解里指定:

@Test
void testWithLocalChrome(
        @Chrome(binary = "/opt/test-resources/browsers/chrome/chrome") WebDriver driver) {
    // 你的测试逻辑
}

方式三:JVM参数全局配置

适合CI/CD里统一设置所有测试的浏览器路径:

-Dselenium.jupiter.browser.chrome.binary=/opt/test-resources/browsers/chrome/chrome

(其他浏览器同理:Firefox用selenium.jupiter.browser.firefox.binary,Edge用selenium.jupiter.browser.edge.binary

4. 重要注意事项

  • 版本严格匹配:确保你本地存放的浏览器版本和驱动版本完全一致(比如Chrome 118必须对应chromedriver 118),否则会出现兼容性错误。
  • 权限设置:在CI环境里,要确保浏览器和驱动文件有可执行权限(Linux/macOS下记得加chmod +x)。
  • 路径正确性:CI环境里尽量使用绝对路径,避免相对路径带来的文件找不到问题。

这样配置后,WebDriverManager就不会再触发任何联网操作,完全依赖你预存在SCM里的浏览器和驱动程序,实现CI/CD环境下的可控执行。

备注:内容来源于stack exchange,提问作者Jens Stockhausen

火山引擎 最新活动