量角器browser.wait间歇性地阻止网站执行

时间:2017-06-20 09:43:20

标签: angularjs protractor wait

我在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浏览器中手动重新创建错误。

3 个答案:

答案 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。

the cause was a network error : err-network-changed