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

.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.Vxx NuGet包。
  • 如果不想手动匹配版本,也可以使用DevToolsSession的自动适配方式,但稳定性略低。

内容的提问来源于stack exchange,提问作者Mufasa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 05:15:31