【发布时间】:2016-04-06 15:23:54
【问题描述】:
有没有办法在 c# 中使用 selenium 捕获浏览器日志。
我希望捕获出现在特定页面上的任何 JS 错误。最好在 Chrome 或 Firefox 上使用。
我以前在 Python 中做过这个,但可以用 C# 来做吗?
【问题讨论】:
标签: javascript c# selenium
有没有办法在 c# 中使用 selenium 捕获浏览器日志。
我希望捕获出现在特定页面上的任何 JS 错误。最好在 Chrome 或 Firefox 上使用。
我以前在 Python 中做过这个,但可以用 C# 来做吗?
【问题讨论】:
标签: javascript c# selenium
使用 Selenium / Chrome / C# 设置和检索日志条目:
ChromeOptions options = new ChromeOptions();
options.SetLoggingPreference(LogType.Browser, LogLevel.Warning);
var driver = new ChromeDriver(options);
driver.Navigate().GoToUrl("http://stackoverflow.com");
var entries = driver.Manage().Logs.GetLog(LogType.Browser);
foreach (var entry in entries) {
Console.WriteLine(entry.ToString());
}
对于 Firefox:
FirefoxOptions options = new FirefoxOptions();
options.SetLoggingPreference(LogType.Browser, LogLevel.Warning);
var driver = new FirefoxDriver(options);
driver.Navigate().GoToUrl("http://stackoverflow.com");
var entries = driver.Manage().Logs.GetLog(LogType.Browser);
foreach (var entry in entries) {
Console.WriteLine(entry.ToString());
}
【讨论】:
Selenium.WebDriver nuget 包的当前稳定版本(v3.141.0 或更低版本)在这方面与 Google Chrome 76 或更高版本不兼容(不符合 W3C 推荐的日志记录方法)。我刚刚尝试了 nuget 包的最新 alpha 版本 (4.0.0-alpha04) - 我没有收到任何日志,但至少 GetLog() 不再抛出 NRE。此提交应该已修复它:github.com/SeleniumHQ/selenium/commit/…
这个库可以帮助你:JSErrorCollector。
当您使用它时,您只需写一行即可列出所有错误:
List<JavaScriptError> jsErrors = JavaScriptError.ReadErrors(driver);
【讨论】: