无法在 Selenium C# 中获取 Chrome 性能日志

Unable to get Chrome Performance logs in Selenium C#(无法在 Selenium C# 中获取 Chrome 性能日志)
本文介绍了无法在 Selenium C# 中获取 Chrome 性能日志的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在我的解决方案中使用以下 nuget 包

I am using following nuget packages in my solution

  1. Selenium.WebDriver - v3.141.0
  2. Selenium.WebDriver.ChromeDriver - v79.0.3945.3600

我正在使用以下代码创建 Chrome 驱动程序实例

using following code I am creating a Chrome driver instance

ChromeOptions options = new ChromeOptions();

//Get Performance Logs from Network tab
ChromePerformanceLoggingPreferences perfLogPrefs = new ChromePerformanceLoggingPreferences();
options.PerformanceLoggingPreferences = perfLogPrefs;
options.SetLoggingPreference("performance", LogLevel.All);

(或)

ChromePerformanceLoggingPreferences perfLogPrefs = new 
ChromePerformanceLoggingPreferences();
perfLogPrefs.AddTracingCategories(new string[] { "devtools.timeline" });
options.PerformanceLoggingPreferences = perfLogPrefs;
options.SetLoggingPreference("goog:loggingPrefs", LogLevel.All);
options.AddAdditionalCapability(CapabilityType.EnableProfiling, true, true);

并与此结合

options.AddUserProfilePreference("intl.accept_languages", "en-US");
options.AddUserProfilePreference("disable-popup-blocking", "true");
options.AddArgument("test-type");
options.AddArgument("--disable-gpu");
options.AddArgument("no-sandbox");
options.AddArgument("start-maximized");
options.LeaveBrowserRunning = true;

IWebDriver driver = new ChromeDriver(options);

但在创建 Chrome 驱动程序实例时,我收到以下错误消息

but while creating Chrome driver instance, I am getting following error message

无效参数:'firstMatch' 的条目 0 无效来自无效参数:指定了 perfLoggingPrefs,但未启用性能日志记录

请问我需要进行哪些更改才能使用最新版本的 Chrome 和 Selenium 驱动程序获取性能日志

May I know what changes do I need to make please to get the performance logs with latest version of Chrome and Selenium driver

当我使用较低版本的 Chrome 驱动程序 (2.35.0) 时,我可以使用以下代码检索性能日志

I am able to retrieve Performance Logs using the below code when I was using lower versions of Chrome driver (2.35.0)

var logs = driver.Manage().Logs.GetLog("performance");

for (int i = 0; i < logs.Count; i++)
{
   Console.WriteLine(logs[i].Message);
}

推荐答案

使用 Selenium WebDriver (v4.0.0-alpha04) 和 Selenium.Chrome.WebDriver (v79.0.0) 并使用以下代码,我能够检索性能日志.

With Selenium WebDriver (v4.0.0-alpha04) and Selenium.Chrome.WebDriver (v79.0.0) and using the following code, I am able to retrieve the performance logs.

ChromeOptions options = new ChromeOptions();

//Following Logging preference helps in enabling the performance logs
options.SetLoggingPreference("performance", LogLevel.All);

//Based on your need you can change the following options
options.AddUserProfilePreference("intl.accept_languages", "en-US");
options.AddUserProfilePreference("disable-popup-blocking", "true");
options.AddArgument("test-type");
options.AddArgument("--disable-gpu");
options.AddArgument("no-sandbox");
options.AddArgument("start-maximized");
options.LeaveBrowserRunning = true;

//Creating Chrome driver instance
IWebDriver driver = new ChromeDriver(options);

//Extracting the performance logs
var logs = driver.Manage().Logs.GetLog("performance");
for (int i = 0; i < logs.Count; i++)
{
   Console.WriteLine(logs[i].Message);
}

希望这会有所帮助.

这些天来,我在最新版本的 Selenium WebDriver 和 Chrome 驱动程序中使用以下两行代码,但无法弄清楚问题所在,现在使用最新版本,不需要以下两行代码.

All these days, I was using the following two lines with latest versions of Selenium WebDriver and Chrome Driver and couldn't figure out what the issue was and now with the latest versions, the following two lines of code is not required.

var perfLogPrefs = new ChromePerformanceLoggingPreferences();
options.PerformanceLoggingPreferences = perfLogPrefs;

这篇关于无法在 Selenium C# 中获取 Chrome 性能日志的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

DispatcherQueue null when trying to update Ui property in ViewModel(尝试更新ViewModel中的Ui属性时DispatcherQueue为空)
Drawing over all windows on multiple monitors(在多个监视器上绘制所有窗口)
Programmatically show the desktop(以编程方式显示桌面)
c# Generic Setlt;Tgt; implementation to access objects by type(按类型访问对象的C#泛型集实现)
InvalidOperationException When using Context Injection in ASP.Net Core(在ASP.NET核心中使用上下文注入时发生InvalidOperationException)
LINQ many-to-many relationship, how to write a correct WHERE clause?(LINQ多对多关系,如何写一个正确的WHERE子句?)