等待元素在量角器中可见
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了等待元素在量角器中可见相关的知识,希望对你有一定的参考价值。
我花了几天时间尝试制作Protractor点击元素,这些元素在点击按钮后出现在页面上。但大多数时候我都有这个错误:
Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
Stack:
Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
at ontimeout (timers.js:498:11)
at tryOnTimeout (timers.js:323:5)
at Timer.listOnTimeout (timers.js:290:5)
到目前为止我尝试了几件事:
browser.waitForAngular
阻止了剧本,尽管我可以看到我在第二页。- 多个
browser.driver.wait
实现,如下所示: browser.driver.wait(EC.visibilityOf($('li.unsigned')),10000).then(()=> element($('li.unsigned'))。click();) - 你可以在上面看到
protractor.ExpectedConditions
,但效果不佳。 - 我还在onPrepare脚本中添加了一个选项来管理implicitWait,如下所示: onPrepare:function()browser.manage()。timeouts()。implicitlyWait(15000);
我让它工作的唯一方法是在尝试单击元素之前删除我尝试的所有内容并使用browser.sleep(10000)。
如果有人知道可能导致问题的原因,或者我还能尝试什么,那么欢迎你!
答案
即使我有类似的问题,我在配置中添加了这些行
jasmineNodeOpts:
// Default time to wait in ms before a test fails.
defaultTimeoutInterval: 250000
,
allScriptsTimeout: 180000
在我的规格中
var originalTimeout;
beforeEach(function ()
originalTimeout = jasmine.defaultTimeoutInterval;
jasmine.defaultTimeoutInterval = 50000;
);
it("texttobe", function()
afterEach(function ()
jasmine.defaultTimeoutInterval = originalTimeout;
);
另一答案
所以,在使用我的代码玩了一下之后,我得到它只需要加入onPrepare
中的protractor.conf.js
:
onPrepare: function ()
browser.manage().timeouts().implicitlyWait(30000);
require('ts-node').register(
project: './tsconfig.e2e.json'
);
通过做一个browser.driver.findElement(by.css(element)).then()
。
使用implicitWait的ExpectedConditions会产生导致超时的问题,但我不知道原因。
以上是关于等待元素在量角器中可见的主要内容,如果未能解决你的问题,请参考以下文章