Selenium C# - 捕获Javascript错误

时间:2013-08-28 13:42:40

标签: c# javascript selenium selenium-webdriver

我正在使用C#测试Selenium Web驱动程序。我想查看我的网页没有出现JavaScript错误。

我为Firefox安装了JSErrorCollector.xpi并在我的代码中添加了以下行(取自here)。

List<object> errors = (List<object>)((IJavaScriptExecutor)_driver).executeScript("return window.JSErrorCollector_errors.pump()");
Assert.IsNull(errors);

但这会引发以下错误:

  

window.JSErrorCollector_errors未定义(UnexpectedJavaScriptError)

任何想法如何解决这个问题,或者任何人都可以提供更好的选择?

2 个答案:

答案 0 :(得分:1)

这是一个不涉及JSErrorCollector.xpi的解决方案 - 只有JavaScript。您可以使用JavaScriptExecuter首先执行此操作:

var errorArray = [];
window.onerror = function(message, file, line) {
    errorArray.push("message: " + message + ", file: " + file + ", line:  " + line);
};

然后,只要您需要获取错误,请执行此JavaScript:

return errorArray;

唯一的缺点是,这只会捕获执行第一个脚本后发生的错误。但听起来根据你的问题可能就是你需要的全部内容。

答案 1 :(得分:0)

JSErrorCollector_errors中没有window个对象,至少在您尝试访问其pump方法时是这样。确保在调用pump对象的JSErrorCollector_errors函数时,该对象已存在。