【问题标题】:Unable to get Chrome Performance logs in Selenium C#无法在 Selenium C# 中获取 Chrome 性能日志
【发布时间】:2020-02-27 05:41:10
【问题描述】:

我在我的解决方案中使用以下 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);

(或)

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 驱动程序实例时,我收到以下错误消息

无效参数:'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);
}

【问题讨论】:

  • 任何人都遇到过同样的问题,请提供解决此问题的任何建议
  • 有没有人能用最新版本的 Selenium Webdriver 和 Chrome 驱动来检索性能日志?

标签: c# selenium selenium-webdriver selenium-chromedriver google-chrome-devtools


【解决方案1】:

使用 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);
}

希望这会有所帮助。

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

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

【讨论】:

  • 你是最棒的)
  • 有什么方法可以获取版本 4 的网络标签内容?需要检索特定的 URL,但仅适用于尝试查看特定页面在加载时加载/访问的所有 URL。
猜你喜欢
  • 2015-02-23
  • 2015-02-23
  • 2019-04-02
  • 2021-09-08
  • 2016-08-29
  • 2019-07-14
  • 2015-10-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多