量角器 browser.wait 间歇性地阻止网站执行
protractor browser.wait intermittently blocks the website execution
我在 angularjs 应用程序上使用 Protractor 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,睡眠,但没有任何改变问题。它有时会卡在加载栏上,阻止应用程序继续。
有什么建议吗?
编辑:不是量角器问题。我设法在常规 Chromium 浏览器中手动重现错误。
你可以做得更简单。您可以等待元素中的“100%”文本。
这里有一个代码:
return browser.wait(ExpectedConditions.textToBePresentInElement(element, '100%'), 60000);
您唯一需要做的就是将 element
替换为文本应该可见的对象。
顺便说一句。由于缺少 chai-as-promise
库,您的期望断言不起作用。
试试下面的代码。
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);
});
这不是 docker 问题,因为我设法在没有量角器的情况下在 chromium 上重现了该错误。
the cause was a network error : err-network-changed
我在 angularjs 应用程序上使用 Protractor 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,睡眠,但没有任何改变问题。它有时会卡在加载栏上,阻止应用程序继续。
有什么建议吗?
编辑:不是量角器问题。我设法在常规 Chromium 浏览器中手动重现错误。
你可以做得更简单。您可以等待元素中的“100%”文本。 这里有一个代码:
return browser.wait(ExpectedConditions.textToBePresentInElement(element, '100%'), 60000);
您唯一需要做的就是将 element
替换为文本应该可见的对象。
顺便说一句。由于缺少 chai-as-promise
库,您的期望断言不起作用。
试试下面的代码。
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);
});
这不是 docker 问题,因为我设法在没有量角器的情况下在 chromium 上重现了该错误。
the cause was a network error : err-network-changed