以编程方式检索页面上的javascript错误计数

时间:2012-10-19 15:36:04

标签: javascript unit-testing testing selenium

我想编写一个测试用例(使用Selenium,但不是这个问题的要点)来验证我的Web应用程序在某些时间点没有脚本错误\警告或无法处理的异常(比如在初始化一个专业版之后)库)。

这些信息可以在大多数浏览器的调试控制台中轻松查看。是否可以执行javascript语句以编程方式获取此信息?

没关系,如果每个浏览器都不同,我可以处理它。

2 个答案:

答案 0 :(得分:2)

目前尚未了解您的问题(就我理解您的问题而言)here

这个想法如下: 然而,我发现,当页面首次加载时,我经常遇到JavaScript错误(因为我正在处理JS并且引入了错误),所以我一直在寻找一种快速的方法来向我的测试添加一个断言检查是否发生了任何JS错误。经过一些谷歌搜索,我得出结论,Selenium没有内置任何东西来支持这一点,但是有许多黑客可以用来实现它。我将在这里描述其中一个。让我再次声明,记录,这是非常hacky。我很想听听其他可能有更好解决方案的人的意见。 我只是在我的页面中添加一个脚本,通过拦截 window.onerror 事件来捕获任何JS错误:

<script type="text/javascript">
    window.onerror=function(msg){
        $("body").attr("JSError",msg);
    }
</script>

如果发生JavaScript错误,这将导致名为JSError的属性,其中包含与JavaScript错误消息对应的值,并将其添加到文档的body标记中。请注意,我使用jQuery来执行此操作,因此如果jQuery无法加载,此特定示例将不起作用。然后,在我的Selenium测试中,我只使用命令assertElementNotPresent,目标为//body[@JSError]。现在,如果页面上出现任何JavaScript错误,我的测试将失败,我知道我必须先解决它们。如果由于某些奇怪的原因,我想检查特定的JavaScript错误,我可以使用assertElementPresent命令,目标为//body[@JSError='the error message']

希望这个新想法可以帮助你:)

答案 1 :(得分:0)

try {
    //code
} catch(exception) {
    //send ajax request: exception.message, exception.stack, etc.
}

更多信息 - MDN Documentation