我在angularjs应用程序上使用量角器4.0.14。
我们正在进行异步调用,使用加载栏需要30秒。所以我等待那段时间之后出现的元素。加载条总是达到100%,然后由于browser.wait而间歇性地停留在100%,但大部分时间它都有效并显示我正在寻找的元素。
当它没有时,它只是停留在100%,获得超时,然后继续测试。只有量角器才能在浏览器上手动进行,它永远不会卡住。
it('Should wait for the end of the api call', function () {
browser.wait(function () {
return $('#loaded i.check').isPresent();
}, 60000);
expect($('#score button').isPresent()).toBe(true);
}, 61000);
我尝试将ignoreSynchronization用于true,我尝试使用implicitlyWait,等待预期条件" EC",使用browser.driver.wait而不是browser.wait,sleep,但没有任何改变问题。它有时会卡在加载栏上,导致应用程序无法继续运行。
有什么建议吗?
编辑:不是量角器问题。我设法在常规Chromium浏览器中手动重新创建错误。
答案 0 :(得分:0)
你可以做得更简单。你可以等待100%'元素中的文本。 这里有一个代码:
return browser.wait(ExpectedConditions.textToBePresentInElement(element, '100%'), 60000);
您唯一需要做的就是将element
替换为文本应该可见的对象。
顺便说一下。由于缺少chai-as-promise
库,您的期望断言不起作用。 Similar issue
答案 1 :(得分:0)
尝试以下代码。
var EC=protractor.ExpectedConditions;
var ele=$('#loaded i.check')
it('Should wait for the end of the api call', function () {
browser.wait(EC.visibilityOf(ele),60000,"NOT VISIBLE");
expect($('#score button').isPresent()).toBe(true);
});
答案 2 :(得分:0)
这不是一个码头工人问题,因为我设法在没有量角器的情况下重新创建了这个bug。