我想编写一个测试用例(使用 Selenium,但不是这个问题的重点)来验证我的 Web 应用程序在某些时间点(例如在初始化主要库之后)没有脚本错误\警告或未处理的异常。
在大多数浏览器的调试控制台中可以很容易地看到这些信息。是否可以执行 javascript 语句以编程方式获取此信息?
如果每个浏览器都不一样也没关系,我可以处理。
我想编写一个测试用例(使用 Selenium,但不是这个问题的重点)来验证我的 Web 应用程序在某些时间点(例如在初始化主要库之后)没有脚本错误\警告或未处理的异常。
在大多数浏览器的调试控制台中可以很容易地看到这些信息。是否可以执行 javascript 语句以编程方式获取此信息?
如果每个浏览器都不一样也没关系,我可以处理。
到目前为止还没有阅读您的问题(据我了解您的问题) 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']
。
希望这个新鲜的想法可以帮助你:)
try {
//code
} catch(exception) {
//send ajax request: exception.message, exception.stack, etc.
}
更多信息 - MDN 文档