C# Selenium 获取 Network 中 Timing 参数 - 'wait for server response' 和 'content download' 数值
在 C# 中使用 Selenium 获取 Network 中的 timing 参数中的 'wait for server response' 和 'content download' 数值,可以通过使用 Chrome DevTools Protocol 来实现。
首先,你需要安装并引用 Chrome DevTools Protocol 的库,可以通过 NuGet 包管理器安装 ChromeDevTools.Protocol 和 Microsoft.Chrome.DevTools.Protocol。
接下来,你可以按照以下步骤获取这些数值:
- 创建一个
ChromeDevToolsProtocolSession对象,并与 Chrome 浏览器建立连接:
using Microsoft.Chrome.DevTools.Protocol;
var session = new ChromeDevToolsProtocolSession();
await session.StartSession();
- 启用 Network 域:
await session.SendAsync(new Network.EnableCommand());
- 监听 Network.requestWillBeSent 事件,以获取请求开始的时间:
session.Subscribe<Network.RequestWillBeSentEvent>(evt =>
{
var requestStartTime = evt.Timestamp;
// 根据需要处理请求开始的时间
});
- 监听 Network.loadingFinished 事件,以获取请求结束的时间和内容下载的时间:
session.Subscribe<Network.LoadingFinishedEvent>(evt =>
{
var requestEndTime = evt.Timestamp;
var contentDownloadTime = evt.Timestamp - evt.EncodedDataLength; // 内容下载时间 = 请求结束时间 - 编码数据长度
// 根据需要处理请求结束时间和内容下载时间
});
- 在你需要的时候,可以使用
session.SendAsync方法发送其他的命令来获取更多的网络信息。例如,你可以发送Network.GetResponseBodyCommand命令来获取响应体的内容。
var getResponseBodyCommand = new Network.GetResponseBodyCommand
{
RequestId = requestId // 你需要获取响应体内容的请求 ID
};
var getResponseBodyResponse = await session.SendAsync(getResponseBodyCommand);
var responseBody = getResponseBodyResponse.Body;
// 根据需要处理响应体内容
请注意,这些代码只是一个基本示例,你可以根据你的具体需求进行修改和扩展。
原文地址: https://www.cveoy.top/t/topic/dJqb 著作权归作者所有。请勿转载和采集!