我正在使用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)
任何想法如何解决这个问题,或者任何人都可以提供更好的选择?
答案 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
函数时,该对象已存在。