.NET6.0+Selenium4.3.0下如何切换Chrome浏览器至离线状态?
Selenium4.3.0 + .NET6.0下Chrome离线切换解决方案
1. ChromeNetworkConditions是否还存在?
不存在了。Selenium 4起已经移除了ChromeNetworkConditions类,官方改用**Chrome DevTools Protocol(CDP)**来实现网络状态控制,替代了旧的NetworkConditions配置方式。
2. 需要导入额外库吗?
不需要额外导入第三方库。只要你的项目已经引用了Selenium.WebDriver和Selenium.WebDriver.ChromeDriver这两个NuGet包,就可以使用内置的CDP相关API。如果需要匹配特定Chrome版本的DevTools,可安装对应版本的Selenium.DevTools.Vxx包(比如Chrome118就装Selenium.DevTools.V118)。
3. 实现离线切换的具体代码
通过CDP的Network.setNetworkConditions命令来设置离线状态,示例代码如下:
异步版本(推荐)
using OpenQA.Selenium; using OpenQA.Selenium.Chrome; using OpenQA.Selenium.DevTools; using OpenQA.Selenium.DevTools.V114.Network; // 替换为你的Chrome对应版本 var options = new ChromeOptions(); using var driver = new ChromeDriver(options); // 初始化DevTools会话 var devTools = driver.GetDevToolsSession(); await devTools.Network.EnableAsync(new EnableCommandSettings()); // 设置离线模式 await devTools.Network.SetNetworkConditionsAsync(new SetNetworkConditionsCommandSettings { Offline = true, DownloadThroughput = 5000, UploadThroughput = 5000, Latency = 5 // 延迟,单位毫秒 }); // 这里执行你的测试逻辑... // 测试结束后恢复在线状态(可选) await devTools.Network.SetNetworkConditionsAsync(new SetNetworkConditionsCommandSettings { Offline = false });
同步版本(适合同步测试代码)
using OpenQA.Selenium; using OpenQA.Selenium.Chrome; using OpenQA.Selenium.DevTools; using OpenQA.Selenium.DevTools.V114.Network; var options = new ChromeOptions(); using var driver = new ChromeDriver(options); var devTools = driver.GetDevToolsSession(); // 同步执行异步方法 devTools.Network.EnableAsync(new EnableCommandSettings()).Wait(); devTools.Network.SetNetworkConditionsAsync(new SetNetworkConditionsCommandSettings { Offline = true, DownloadThroughput = 5000, UploadThroughput = 5000, Latency = 5 }).Wait(); // 测试逻辑... // 恢复在线 devTools.Network.SetNetworkConditionsAsync(new SetNetworkConditionsCommandSettings { Offline = false }).Wait();
关键注意点
- DevTools版本必须与本地Chrome浏览器版本完全匹配,否则会出现兼容性问题。可以通过Chrome浏览器的「设置-关于Chrome」查看版本号,然后安装对应版本的
Selenium.DevTools.VxxNuGet包。 - 如果不想手动匹配版本,也可以使用
DevToolsSession的自动适配方式,但稳定性略低。
内容的提问来源于stack exchange,提问作者Mufasa
相关产品推荐
相关产品推荐

