【问题标题】:Selenium Chrome Driver (75 onward) problem accessing Logs using GetLog() methodSelenium Chrome 驱动程序(75 起)使用 GetLog() 方法访问日志时出现问题
【发布时间】:2019-07-09 06:08:45
【问题描述】:

Selenium.WebDriver.ChromeDriver74.0.3729.6 版本中,我可以毫无问题地运行以下代码:

foreach (var logItem in driverInstance.Manage().Logs.GetLog(LogType.Browser).ToList())
{
    NLogLogger.Debug(logItem.Message);
}

但是从版本75.0.3770.90开始

System.NullReferenceException: 'Object reference not set to an instance of an object.'

在最新的发行说明中,我发现一些关于日志记录更改的内容,但没有明确指出发生了什么更改或可能导致此问题:

  • 已解决问题 2947:没有用于检索日志的符合 W3C 的端点 [Pri-2]
  • 已解决问题 2803:功能名称 loggingPrefs 不符合规范 [Pri-2]

https://chromedriver.storage.googleapis.com/75.0.3770.90/notes.txt

理想情况下,我不想删除此代码,因为我必须能够从浏览器端获取日志,但我也不希望被锁定到 Selenium Chrome 驱动程序的 74 版本,因为随着时间的推移,这显然会变成一个越来越大的问题,所以我想知道是否有人可以建议一种不同的方式来动态访问这些日志?

【问题讨论】:

  • 很高兴其他人遇到了这个问题,而不仅仅是我。希望问题根本不存在。感谢您发布问题。相当关键的功能恕我直言。如果可以的话,会给这个问题 5 分。

标签: c# selenium selenium-webdriver selenium-chromedriver


【解决方案1】:

driver.Manage().Logs.GetLog(LogType.Browser) no longer working in Chromedriver version 75.0.3770

我遇到了同样的问题,不幸的是,对于当前版本的 Selenium,它无法在 w3c 模式下工作。

【讨论】:

  • 非常感谢,不知道为什么我没有看到你的帖子!我想知道下一个版本什么时候发布?
【解决方案2】:

不确定 C# 绑定,但 Java 将 loggingPrefs 更改为 goog:loggingPrefs 帮助了我,我在这里找到了答案:https://stackoverflow.com/a/56536604/10824437

【讨论】:

  • 感谢 Artem,我也偶然发现了这一点,但我还不确定如何在 C# 中实现此方法,因为他们不以同样的方式使用 setCapability,一个示例说明我的设置看起来更类似于:chromeOptions.SetLoggingPreference(LogType.Browser, OpenQA.Selenium.LogLevel.Debug); chromeOptions.SetLoggingPreference(LogType.Driver, OpenQA.Selenium.LogLevel.Severe); ChromeDriver chromeDriver = new ChromeDriver(chromeOptions);
  • @BernardV,您可以尝试加入 Slack 并询问那里的 selenium 开发人员/用户:seleniumhq.org/slack。这和他们的 irc 是同一个频道:#selenium at Freenode
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-15
  • 1970-01-01
  • 2016-06-30
  • 2019-01-27
  • 1970-01-01
相关资源
最近更新 更多