ChromeDriver 136无头模式异常:桌面测试陷平板模式问题求助
ChromeDriver 136变更及无头桌面模式恢复方案
一、ChromeDriver 136的关键变更
Chrome 136版本对无头模式进行了核心调整:默认启用了新版无头模式(Headless Mode v2),该模式基于Chrome for Android内核构建,默认模拟移动设备(平板/手机)的视口与行为,而非旧版无头模式默认的桌面端环境。这直接导致测试中出现784×445的平板尺寸,触发页面移动端布局,引发测试失败。
二、恢复无头桌面模式的解决方法
方案1:强制使用旧版无头模式(快速兼容原有配置)
将原代码中启用无头模式的参数从headless改为headless=old,即可回到之前正常运行的桌面端无头环境:
if (!Debugger.IsAttached) options.AddArgument("headless=old"); // 替换原"headless"参数
此方案无需额外调整其他配置,能快速适配现有测试代码。
方案2:适配新版无头模式(长期推荐,避免旧模式被移除)
若想适配新版无头模式,需显式指定桌面设备类型、视口尺寸及桌面端用户代理,同时通过CDP命令确保视口生效:
var options = new EdgeOptions { PageLoadStrategy = PageLoadStrategy.Normal }; // 保留原有参数 options.AddArgument("enable-automation"); options.AddArgument("disable-dev-shm-usage"); options.AddArgument("ignore-certificate-errors"); options.AddArgument("ignore-ssl-errors"); options.AddArgument("disable-popup-blocking"); options.AddArgument("window-size=1920,1080"); options.AddUserProfilePreference("download.default_directory", DownloadPath); // 启用新版无头模式并指定桌面设备 if (!Debugger.IsAttached) { options.AddArgument("headless=new"); options.AddArgument("device-type=desktop"); // 关键:强制桌面设备类型 // 指定桌面端用户代理(Chrome 136桌面版UA) options.AddArgument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36"); } options.AddArgument("disable-gpu"); var service = EdgeDriverService.CreateDefaultService(); Driver = new EdgeDriver(service, options, TimeSpan.FromSeconds(MaxWait)); SetTimeOuts(MaxWait); Driver.Manage().Cookies.DeleteAllCookies(); // 替换原Maximize,用CDP强制设置桌面视口 Driver.ExecuteCdpCommand( "Emulation.setDeviceMetricsOverride", new Dictionary<string, object> { ["width"] = 1920, ["height"] = 1080, ["deviceScaleFactor"] = 1, ["mobile"] = false, // 明确禁用移动模拟 ["screenWidth"] = 1920, ["screenHeight"] = 1080 }); // 保留原有时区设置 Driver.ExecuteCdpCommand( "Emulation.setTimezoneOverride", new Dictionary<string, object> { ["timezoneId"] = "Europe/London" });
注:原代码中
Driver.Manage().Window.Maximize();在新版无头模式下可能无法生效,因此改用CDP的Emulation.setDeviceMetricsOverride命令强制设置桌面视口,确保布局符合预期。
内容的提问来源于stack exchange,提问作者Kev
相关产品推荐
相关产品推荐

