【问题标题】:C# Selenium webdriver JavaScript errors loggingC# Selenium webdriver JavaScript 错误日志记录
【发布时间】:2012-01-09 04:51:43
【问题描述】:

我正在使用 C# 测试 Selenium webdriver。 如何记录测试中可能发生的所有 JavaScript 错误?

【问题讨论】:

    标签: c# javascript selenium webdriver


    【解决方案1】:

    这取决于您的意思,如果您想在使用时捕获代码中生成的 javascript 错误:

    ((IJavaScriptExecutor)_driver).ExecuteScript("some javascript code here")

    然后将这些语句包装在 try/catch/finally 中并记录异常。

    如果您想捕获浏览器生成的 javascript 错误,那么简短的回答是:您不能轻易做到。

    长答案:

    1. 使用 Firefox 驱动程序
    2. 使用自定义配置文件实例化它
    3. 安装 Firebug 和 ConsoleExport 插件
    4. 通过SetPreference() 适当配置这些插件,以便它会自动将控制台导出到您选择的位置

    如果您需要一些示例代码,请告诉我,我会给您真的长答案...

    【讨论】:

    • 感谢您的回答。我想捕获浏览器生成的 javascript 错误。我听说过 JSErrorCollector - mguillem.wordpress.com/2011/10/11/…。也许可以在 C# 中使用它?
    • 您绝对可以在 C# 中做到这一点,而且比安装 Firebug 和 ConsoleExport 插件要容易一些。但是,我对 JSErrorCollector 不够熟悉,不知道如何使用它——所以它实际上可能需要一个 C# 端口才能真正按照博客中的描述工作。
    • 我刚刚看了一下,它在 C# 中完全可行,你需要做的就是获取 JSErrorCollector.xpi 并将其安装在自定义的 Firefox 配置文件中,然后执行“List 错误 = (List)((IJavaScriptExecutor)_driver).executeScript("返回 window.JSErrorCollector_errors.pump()");"获取 javascript 错误列表。
    • 但它是 Firefox 的解决方案。关于 IE 的任何想法?
    • 你可能对 IE 不走运,你能做的最好的就是注入你提到的博客中概述的 javascript,但就像它说的那样,你会错过在注入该脚本之前遇到的任何错误。 ..
    【解决方案2】:

    关于上面回复的部分cmet,你应该可以通过使用webdrivers的内置方法得到测试执行过程中产生的javascript错误:

    Driver().Manage().Logs.GetLog();
    

    通过指定你感兴趣的日志可以得到浏览器日志,即:

    Driver().Manage().Logs.GetLog(LogType.Browser);
    

    这将返回一个 ReadOnlyCollection,其中包含来自 webdriver 浏览器窗口的所有日志条目。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-30
      • 2012-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多