
Chrome 114 及更高版本废弃了旧版 --headless 参数,必须改用 --headless=new 才能正常启动无头浏览器,否则会因 DevTools 连接失败导致 Session 创建异常。
chrome 114 及更高版本废弃了旧版 `--headless` 参数,必须改用 `--headless=new` 才能正常启动无头浏览器,否则会因 devtools 连接失败导致 session 创建异常。
在 Chrome 114+(对应 ChromeDriver 114.0.5735.90 及以上)中,Google 彻底重构了 Headless 模式实现机制。旧写法 --headless 或 chromeOptions.setHeadless(true) 已被弃用,若继续使用将触发如下典型错误:
[WARNING]: Browser-wide DevTools client failed to connect: disconnected: unable to connect to renderer SessionNotCreatedException: disconnected: not connected to DevTools
这是因为新版 Headless 模式默认不启用完整的 DevTools 协议支持,而 Selenium 4.4+ 的 WebDriver 实现依赖该协议进行会话管理。唯一兼容且官方推荐的解决方案是显式指定 --headless=new。
✅ 正确配置示例(Java + Selenium 4.4+):
ChromeOptions options = new ChromeOptions();
options.addArguments("--start-maximized");
options.addArguments("--headless=new"); // ✅ 关键:必须使用 new 模式
options.addArguments("--no-sandbox");
options.addArguments("--disable-dev-shm-usage");
options.addArguments("--remote-allow-origins=*");
// 如需保留原有偏好设置(如下载路径、媒体权限等),仍可添加
Map<string object> chromePrefs = new HashMap();
chromePrefs.put("profile.default_content_settings.popups", 0);
options.setExperimentalOption("prefs", chromePrefs);
WebDriver driver = new ChromeDriver(options);</string>
⚠️ 注意事项:
- 不要混用
--headless和--headless=new,后者已完全取代前者; -
chromeOptions.setHeadless(true)在新版 ChromeDriver 中无效且可能引发冲突,应彻底移除; -
--disable-gpu和--window-size在--headless=new下非必需(新版本自动适配),但保留无害; - Windows 环境下务必保留
--no-sandbox和--disable-dev-shm-usage以避免权限/内存问题; - 若测试涉及 WebRTC、摄像头或麦克风模拟,需额外添加
--use-fake-ui-for-media-stream和--use-fake-device-for-media-stream。
? 总结:从 Chrome 114 开始,“Headless” 不再是一个布尔开关,而是一个具有两种模式的特性——--headless=old(已移除)和 --headless=new(当前唯一有效模式)。升级后务必同步更新启动参数,这是保障自动化测试在 CI/CD 环境中稳定运行的关键一步。










