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

如何在Selenium WebDriver C#中捕获网络请求?

在Selenium C#测试中查看网络请求的方法

在Selenium 4及以上版本中,最直接的方式是利用**Chrome DevTools Protocol (CDP)**来捕获和查看网络请求/响应,以下是具体实现步骤:

1. 准备工作

确保项目引用了最新版的Selenium.WebDriver和Selenium.WebDriver.ChromeDriver NuGet包,且Chrome浏览器与ChromeDriver版本严格匹配。

2. 代码实现

引用必要命名空间

using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.DevTools;
using OpenQA.Selenium.DevTools.V125.Network; // 版本需与Chrome浏览器一致

初始化Driver与DevTools会话

var chromeOptions = new ChromeOptions();
using var driver = new ChromeDriver(chromeOptions);

// 获取DevTools实例并创建会话
var devTools = driver.GetDevTools();
await devTools.CreateSessionAsync();

启用网络监控并订阅事件

// 开启网络监听
await devTools.SendCommandAsync(new EnableCommandSettings());

// 监听请求发送事件
devTools.Network.RequestWillBeSent += (sender, args) =>
{
    Console.WriteLine($"[请求] URL: {args.Request.Url}");
    Console.WriteLine($"[请求] 方法: {args.Request.Method}");
    Console.WriteLine($"[请求] ID: {args.RequestId}\n");
};

// 监听响应接收事件
devTools.Network.ResponseReceived += (sender, args) =>
{
    Console.WriteLine($"[响应] URL: {args.Response.Url}");
    Console.WriteLine($"[响应] 状态码: {args.Response.Status}");
    Console.WriteLine($"[响应] ID: {args.RequestId}\n");
};

执行测试操作

// 访问目标页面,此时会触发网络事件
driver.Navigate().GoToUrl("https://example.com");

// 执行你的测试逻辑...

清理资源

// 关闭网络监听
await devTools.SendCommandAsync(new DisableCommandSettings());
// 关闭Driver实例
driver.Quit();

注意事项

  • DevTools的版本命名空间(如V125)必须与Chrome浏览器版本完全一致,否则会出现兼容性问题。可通过Chrome浏览器的「关于」页面查看版本号。
  • 若使用Firefox浏览器,可通过FirefoxDriver.GetDevTools()获取DevTools实例,操作逻辑与上述Chrome示例一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 17:37:10