C# Selenium 获取 Network 中 Timing 参数: wait for server response 和 content download
要获取Network中的timing参数中的'wait for server response'和'content download'数值,可以通过使用Selenium的DevTools来实现。
首先,创建一个ChromeOptions对象,启用DevTools,并将其传递给ChromeDriver:
ChromeOptions options = new ChromeOptions();
options.AddAdditionalCapability('goog:loggingPrefs', new Dictionary<string, object> { { 'performance', 'ALL' } });
ChromeDriver driver = new ChromeDriver(options);
接下来,启用Performance日志记录:
driver.Manage().Logs.LogsAvailable += (sender, e) =>
{
if (e.LogType == LogType.Performance)
{
var performanceLog = driver.Manage().Logs.GetLog(LogType.Performance);
foreach (var entry in performanceLog)
{
var logMessage = JObject.Parse(entry.Message)['message'];
var method = logMessage['method']?.ToString();
if (method == 'Network.responseReceived')
{
var paramsObj = logMessage['params'];
var requestId = paramsObj['requestId']?.ToString();
var response = paramsObj['response'];
var url = response['url']?.ToString();
if (url == 'YOUR_URL')
{
var timing = response['timing'];
var waitForServerResponse = timing['wait']?.ToObject<double>();
var contentDownload = timing['receive']?.ToObject<double>();
// 在这里使用waitForServerResponse和contentDownload
}
}
}
}
};
在上面的代码中,我们订阅了LogsAvailable事件,并检查日志类型是否为Performance。对于Performance日志,我们解析每个日志条目的message字段,并检查method字段是否为'Network.responseReceived'。如果是,我们可以获取到requestId和response对象。然后,我们可以检查response的url是否为所需的URL,并从timing对象中获取waitForServerResponse和contentDownload的值。
请注意,上述代码中的'YOUR_URL'应替换为您要获取timing参数的URL。
希望对你有所帮助!
原文地址: https://www.cveoy.top/t/topic/dT1U 著作权归作者所有。请勿转载和采集!