2017-06-20 63 views
0

我在angularjs应用程序上使用量角器4.0.14。量角器browser.wait间歇性地阻止网站执行

我们正在做一个异步调用,需要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为真,我尝试使用implicitlyWait,等待预期的条件“EC”,使用browser.driver.wait代替browser.wait,睡眠,但没有改变的问题。它有时会卡在加载栏上,导致应用程序无法继续。

有什么建议吗?

编辑:不是量角器问题。我设法在常规的Chromium浏览器中手动重新创建错误。

回答

0

你可以做得更简单。您可以等待元素中的'100%'文字。 这里有一个代码:

return browser.wait(ExpectedConditions.textToBePresentInElement(element, '100%'), 60000);

你所要做的唯一事情是有对象,其中的文字应该是可见的,以取代element

Btw。您的预期断言不起作用,因为缺少chai-as-promise库。 Similar issue

+0

实际上,期望是应该解决定位元素的承诺。它可以在任何其他地方使用茉莉花量角器,而无需任何其他库。 试过100%的解决方案,也没有办法。可能是因为它等待100%,但100%可以很快出现,并在应用程序继续时褪色。然后它超时。 – bwarff

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); 
}); 
+0

试过了,它在外面的var ele有错误,就像浏览器元素没有被定义一样。在它里面,它只是表现相同,100%阻塞,有时工作。 – bwarff