javascript - 等待元素在量角器中可见
问题描述
我花了几天时间尝试让 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;
});