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 错误的主要内容,如果未能解决你的问题,请参考以下文章