我在 Protractor 中遇到这个错误:
Uncaught exception: Timed out waiting for Protractor to synchronize with the page after 60 seconds. Please see https://github.com/angular/protractor/blob/master/docs/faq.md
在那之后没有其他事情发生,这对我来说是个问题,因为在我的 conf 文件中,在 onComplete
上我有一个将测试结果写入 JSON 文件的函数,但如果发生该错误,系统将永远无法访问该函数。
另一个问题是浏览器窗口没有关闭。
我想捕获那个异常,或者模拟 onError
conf文件中的函数。我搜索了 Protractor API但是关于 onComplete
什么都没有或 onPrepare
所以也没有关于onError
.那是 Jasmine 的一部分吗?
注意 Uncaught exception
不是一个正常的错误,当一个expect()
失败或正常 timeout
错误。
最佳答案
由于 promise 的异步性质,我认为不存在可以捕获所有异常的单一顶级位置。
相反,我建议实际将异常处理函数传递给任何已实现的 promise 。
因此,在任何测试用例中,每当我在 promise 中使用 then
(或 then
链)时,我确保我还提供了一个函数作为第二个参数来处理可能发生的任何异常。
例如:
function o_O(reason) {
expect(reason.name).toBe("");
expect(reason.message).toBe("");
expect(reason.stack).toBe("");
}
it(' ....', function() {
loginElt.click().then(function () {
...
}, o_O);
});
这只会让测试用例因意外异常而失败,并报告异常中的相关非空信息。
关于javascript - 在 Protractor 2.0 中捕获异常,创建 onError 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29778541/