4

我正在使用 C# 测试 Selenium Web 驱动程序。我想检查我的网页是否存在 JavaScript 错误。

我已经安装JSErrorCollector.xpi了 Firefox 并将以下几行添加到我的代码中(取自此处)。

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

但这会带来以下错误:

window.JSErrorCollector_errors 未定义 (UnexpectedJavaScriptError)

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

4

2 回答 2

2

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

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

然后每当您需要获取错误时,执行以下 JavaScript:

return errorArray;

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

于 2013-08-28T18:59:12.667 回答
0

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

于 2013-08-28T14:13:43.960 回答