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

通过运行TestNG的Java命令向Chrome传递--headless参数的方法

解决方案

1. 调整测试代码中浏览器初始化逻辑

Selenium本身不会自动读取自定义JVM参数并应用到浏览器配置,你需要在ChromeOptions初始化的代码中新增读取系统参数、判断是否开启无头模式的逻辑:

ChromeOptions options = new ChromeOptions();
// 读取JVM参数判断是否开启headless,默认不开启
String isHeadless = System.getProperty("browser.headless", "false");
if ("true".equalsIgnoreCase(isHeadless)) {
    // Chrome 112及以上版本推荐用新版headless模式,和有头浏览器行为一致性更高
    options.addArguments("--headless=new");
    // 旧版Chrome可替换为下面的写法
    // options.addArguments("--headless");
    // 搭配窗口尺寸配置,避免无头模式下元素定位失败
    options.addArguments("--window-size=1920,1080");
}
// 保留你原本的其他浏览器配置逻辑
WebDriver driver = new ChromeDriver(options);

2. 调整运行命令

在原启动命令中新增-Dbrowser.headless=true参数即可开启无头模式,示例如下:

java -Dbrowser=CHROME -Dbrowser.headless=true -Dtestng.dtd.http=true -Dwdm.chromeDriverVersion=94.0.4606.61 \
-classpath ourTest.jar;ourApplication.jar org.testng.TestNG -testjar ourTest.jar 

补充说明

  • 之前的尝试不生效的原因:直接在TestNG启动命令后追加--headless参数会被TestNG识别为自身运行参数,不会传递给Selenium浏览器配置;自定义的-DadditionalBrowserArguments等参数没有对应代码逻辑读取解析,自然也不会生效。
  • 如果不需要每次都开启无头模式,只要去掉命令中的-Dbrowser.headless=true参数即可恢复普通有头模式运行。

内容的提问来源于stack exchange,提问作者Marc Le Bihan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 08:36:03