C# Selenium 获取网络请求中的等待时间和内容下载时间
在 C# 中使用 Selenium 获取 Network 中的 timing 参数中的'wait for server response' 和 'content download' 数值,可以通过以下步骤实现:
- 创建一个 ChromeDriver 实例:
ChromeDriver driver = new ChromeDriver();
- 启用 Performance Log 以获取网络请求信息:
driver.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(120);
driver.Manage().Timeouts().AsynchronousJavaScript = TimeSpan.FromSeconds(120);
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(120);
driver.Manage().Logs.GetLog(LogType.Performance).Enabled = true;
- 导航到目标网页:
driver.Navigate().GoToUrl("https://example.com");
- 获取网络请求的日志:
LogEntries logs = driver.Manage().Logs.GetLog(LogType.Performance);
- 遍历日志条目,找到包含 timing 参数的日志条目:
foreach (LogEntry entry in logs)
{
if (entry.Message.Contains("'method":"Network.responseReceived"') ||
entry.Message.Contains("'method":"Network.loadingFinished"'))
{
// 解析日志中的 timing 参数
JObject json = JObject.Parse(entry.Message);
JObject timing = json["message"]["params"]["response"]["timing"].Value<JObject>();
// 获取'wait for server response' 和 'content download' 数值
double waitForServerResponse = timing["receiveHeadersEnd"].Value<double>() - timing["requestStart"].Value<double>();
double contentDownload = timing["responseEnd"].Value<double>() - timing["responseStart"].Value<double>();
// 打印数值
Console.WriteLine("Wait for server response: " + waitForServerResponse + " ms");
Console.WriteLine("Content download: " + contentDownload + " ms");
}
}
注意:上述代码假设页面加载完成后会生成一些网络请求的日志条目,由于不同的网页可能会有不同的日志格式,你可能需要根据实际情况进行适当的调整。此外,这些数值是以毫秒为单位的。
原文地址: https://www.cveoy.top/t/topic/efF4 著作权归作者所有。请勿转载和采集!