【问题标题】:C# Selenium access browser logC# Selenium 访问浏览器日志
【发布时间】:2016-04-06 15:23:54
【问题描述】:

有没有办法在 c# 中使用 selenium 捕获浏览器日志。

我希望捕获出现在特定页面上的任何 JS 错误。最好在 Chrome 或 Firefox 上使用。

我以前在 Python 中做过这个,但可以用 C# 来做吗?

【问题讨论】:

    标签: javascript c# selenium


    【解决方案1】:

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

    【讨论】:

    • 很好的帮助。解决了我的问题。非常感谢
    • 现在用最新的 chromedriver 抛出 NullReferenceException :(
    • 此解决方案不起作用。 NullRef 异常,因为 driver.Manage().Logs 无论如何都是 null。
    • Selenium.WebDriver nuget 包的当前稳定版本(v3.141.0 或更低版本)在这方面与 Google Chrome 76 或更高版本不兼容(不符合 W3C 推荐的日志记录方法)。我刚刚尝试了 nuget 包的最新 alpha 版本 (4.0.0-alpha04) - 我没有收到任何日志,但至少 GetLog() 不再抛出 NRE。此提交应该已修复它:github.com/SeleniumHQ/selenium/commit/…
    • 使用 nuget 包 4.0.0-alpha05 成功为我获取控制台日志。它不适用于 3.141.0。
    【解决方案2】:

    这个库可以帮助你:JSErrorCollector

    当您使用它时,您只需写一行即可列出所有错误:

    List<JavaScriptError> jsErrors = JavaScriptError.ReadErrors(driver);  
    

    【讨论】:

    • 链接产生 404
    猜你喜欢
    • 2013-08-20
    • 1970-01-01
    • 2021-04-26
    • 2017-12-12
    • 2014-10-15
    • 2015-12-25
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多