zer*_*kms 5 javascript testing selenium google-chrome selenium-webdriver
我在应用程序中捕获js错误window.onerror
,但事情是 - 如果没有打开dev工具,则在Chrome中 - 那么url
传递给onerror
handler 的参数总是等于打开的url.
如果开启了dev工具 - 那么url
指向确切.js
文件会导致js错误.
你如何解决?有没有解决方法?
更清楚 - 这里有2个结果:
Uncaught ReferenceError: a is not defined index:122
- 这是在获取页面后收到的Uncaught ReferenceError: a is not defined List.js:122
- 在打开dev工具获取同一页面后收到此消息.这是预期的结果 - 我已经a();
调用该List.js
文件进行测试.UPD:这是为功能测试(使用selenium webdriver)完成的 - 我想捕获js错误以供进一步调查.
让我们提出以下架构:
window.addEventListener("error", handleException, false);
function handleException(I_sMsg) {
if (I_sMsg.stack) {
sMsg = I_sMsg.stack.replaceAll(getBaseURL(), "");
alert(sMsg);
} else if (I_sMsg.message) {
alert(I_sMsg.message);
}
return cancelEvent(I_sMsg);
}
Run Code Online (Sandbox Code Playgroud)
现在,anythrow new Error("description");
将执行 if 语句的第一部分,并有一个很好的堆栈供您使用 url 进行解析。
它也适用于意外异常,因此出现以下消息(在本例中是在调用不存在的bibi()
函数之后)
经过进一步调查,我的框架正在使用某种自制的作业管理(实际上如堆栈所示),其中每个操作都属于一个作业。
作业执行方法如下(简化)
try {
oTask.func.apply(oTask.obj, oTask.prms);
} catch(ex) {
handleException(ex);
return false;
}
Run Code Online (Sandbox Code Playgroud)
因此,这意味着每个单独的执行都封装在这个单独的 try catch 块中。如您所见,异常被捕获并传递给处理程序。不是错误。
我虽然它在另一个文件中工作,但这是因为调用是封装的,而直接在 api.js 文件中,它是一个不受框架管理的免费调用。
归档时间: |
|
查看次数: |
1178 次 |
最近记录: |