是否有可能捕获并记录通过我在Google Chrome中运行的测试可能发生的所有JS错误

时间:2012-10-13 10:40:12

标签: c# javascript selenium

我在C#中使用Selenium WedDriver。

有没有办法捕获并记录我在谷歌浏览器中运行测试时可能发生的所有JS错误?

例如Firefox的“JSErrorCollector” - http://mguillem.wordpress.com/2011/10/11/webdriver-capture-js-errors-while-running-tests/

4 个答案:

答案 0 :(得分:2)

现在我们拥有与Chrome相同的插件。就在这里 - https://github.com/dharrya/ChromeJSErrorCollector

它与JSErrorCollector非常相似。

答案 1 :(得分:2)

正如Simeon Sinichkin所提到的,ChromeJSErrorCollector在这里非常有用。对于C#中的其他任何人来说,这里有一些示例代码来获取JS错误并将它们记录到文件/控制台:

var options = new ChromeOptions();
options.AddExtension("ChromeJSErrorCollector.crx");
var driver = new ChromeDriver(options);

// run tests...

var javascriptDriver = driver as IJavaScriptExecutor;
var errors = javascriptDriver.ExecuteScript("return window.JSErrorCollector_errors ? window.JSErrorCollector_errors.pump() : []");
var writer = new StreamWriter("jsErrors.log");
var collection = errors as ReadOnlyCollection<object>;
foreach (var item in collection)
{
    var errorObject = item as Dictionary<string, object>;
    foreach (var field in errorObject)
    {
        Console.WriteLine(field.Key + " - " + field.Value);
        writer.WriteLine(field.Key + " - " + field.Value);
    }

    Console.WriteLine("-------------------");
    writer.WriteLine("-------------------");
}
writer.Flush();
writer.Close();

输出如下:

errorMessage - Error: Script error
http://requirejs.org/docs/errors.html#scripterror
lineNumber - 1795
pageUrl - http://someURL
sourceName - http://someURL/Scripts/require.js
-------------------

答案 2 :(得分:0)

我可能不在这里,因为我从未使用过Selenium,因此可能无法完全理解上下文:但您可以使用window.onerror来捕获浏览器中出现的任何错误,然后对它们执行某些操作(可能将它们发送到数据库或日志文件)。

请注意,这并不仅限于JavaScript错误,也可能包含一些HTTP错误。

答案 3 :(得分:0)

使用chrome开发人员工具(ctrl + shift + i)并查看控制台选项卡是否有错误。

Chrome还允许您在代码的某些行上设置断点,并查看变量的所有值。