我将使用带有茉莉花和角6的量角器创建端到端(e2e)测试。我编写了一些测试用例,涉及近10个案例。一切正常,但总是有些情况失败。而且由于茉莉花超时而失败。我已配置超时值,如下所示。但是我没有得到一致的结果。有时,一个测试用例是成功的,但是在下一次运行时,它将成功或失败。我在Google上进行了搜索,但没有找到任何有用的解决方案。
我已经定义了一些等待的常用属性
waitForElement(element: ElementFinder){
browser.waitForAngularEnabled(false);
browser.wait(() => element.isPresent(), 100000, 'timeout: ');
}
waitForUrl(url: string){
browser.wait(() => protractor.ExpectedConditions.urlContains(url), 100000, 'timeout')
}
我已经定义了protractor.conf.js文件
jasmineNodeOpts: {
showColors: true,
includeStackTrace: true,
defaultTimeoutInterval: 20000,
print: function () {
}
}
我遇到错误了
- Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
- Failed: stale element reference: element is not attached to the page document
(Session info: chrome=76.0.3809.100)
(Driver info: chromedriver=76.0.3809.12 (220b19a666554bdcac56dff9ffd44c300842c933-refs/branch-heads/3809@{#83}),platform=Windows NT 10.0.17134 x86_64)
答案 0 :(得分:0)
我有解决方法:
我为单个元素查找配置了100000 ms的等待超时,整个脚本超时为20000 ms。所以我遵循以下过程:
将完整规格超时保持在下面,而不是所有元素的总和超时。我在 jasmineNodeOpts 上将 defaultTimeoutInterval 配置为大于所有测试用例超时的值之和。然后在 allScriptsTimeout 中添加一个较大的值:export.config内部的2000000。它解决了我的问题。
NB:之所以给出这个答案,是因为我认为这可能会帮助其他将面临此类问题的人。