Selenium C# - 捕获 Javascript 错误

Posted

技术标签:

【中文标题】Selenium C# - 捕获 Javascript 错误【英文标题】:Selenium C# - Catching Javascript errors 【发布时间】:2013-08-31 15:09:10 【问题描述】:

我正在使用 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)

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

【问题讨论】:

【参考方案1】:

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

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

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

return errorArray;

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

【讨论】:

【参考方案2】:

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

【讨论】:

如果你这样做: 在您的 html 中,然后您将创建对象及其方法,但是,这应该在您调用它之前运行。在您的情况下,错误可能是您尝试过早达到此目标。

以上是关于Selenium C# - 捕获 Javascript 错误的主要内容,如果未能解决你的问题,请参考以下文章

需要 C# 打破 Selenium 第一次机会异常

使用 Selenium 捕获 404 错误 [重复]

使用 Selenium 从中间事件中捕获 JSON 数据

Selenium - 查找网页的所有元素

在 selenium webdriver 中捕获屏幕截图 [重复]

使用 Java 使用 Selenium WebDriver 捕获浏览器日志