C# selenium如何获取network中的timing参数中的wait for server response 和 content download数值
在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/jfv1 著作权归作者所有。请勿转载和采集!