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

Sub*_*nga 0 c# selenium google-chrome-devtools selenium-chromedriver selenium-webdriver

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

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

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

ChromeOptions options = new ChromeOptions();

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

(或者)

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);
Run Code Online (Sandbox Code Playgroud)

并与此相结合

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);
Run Code Online (Sandbox Code Playgroud)

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

无效参数:“firstMatch”的条目 0 因无效参数而无效:指定了 perfLoggingPrefs,但未启用性能日志记录

我可以知道我需要进行哪些更改才能获取最新版本的 Chrome 和 Selenium 驱动程序的性能日志

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

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

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

Sub*_*nga 6

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

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);
}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助。

这些天,我一直在最新版本的 Selenium WebDriver 和 Chrome Driver 中使用以下两行代码,但无法弄清楚问题是什么,现在使用最新版本,不需要以下两行代码。

var perfLogPrefs = new ChromePerformanceLoggingPreferences();
options.PerformanceLoggingPreferences = perfLogPrefs;
Run Code Online (Sandbox Code Playgroud)