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

时间:2019-10-31 20:08:08

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

我在解决方案中使用了以下nuget软件包

  1. Selenium.WebDriver-v3.141.0
  2. Selenium.WebDriver.ChromeDriver-v78.0.3904.7000

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

ChromeOptions options = new ChromeOptions();

//Get Performance Logs from Network tab
var perfLogPrefs = new ChromePerformanceLoggingPreferences();
options.PerformanceLoggingPreferences = perfLogPrefs;
options.SetLoggingPreference("performance", LogLevel.All);
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);
}

1 个答案:

答案 0 :(得分:2)

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