Zac*_*ach 74 wait jasmine protractor
在测试规范中,我需要单击网页上的按钮,然后等待新页面完全加载.
emailEl.sendKeys('jack');
passwordEl.sendKeys('123pwd');
btnLoginEl.click();
// ...Here need to wait for page complete... How?
ptor.waitForAngular();
expect(ptor.getCurrentUrl()).toEqual(url + 'abc#/efg');
Run Code Online (Sandbox Code Playgroud)
gle*_*tre 85
根据您的要求,您可以尝试:
browser.waitForAngular();
要么
btnLoginEl.click().then(function() {
// do some stuff
});
Run Code Online (Sandbox Code Playgroud)
解决诺言.如果你能做到这一点会更好beforeEach.
注意:我注意到expect()在比较之前等待内部的promise(即getCurrentUrl)被解决.
Fil*_*zak 29
我只是看了一下源代码 - Protractor只在少数情况下等待Angular(比如element.all调用时,或设置/获取位置).
所以Protractor不会等待Angular在每个命令后稳定下来.
此外,有时在我的测试中,我在Angular摘要周期和点击事件之间进行了比赛,所以有时我必须这样做:
elm.click();
browser.driver.sleep(1000);
browser.waitForAngular();
Run Code Online (Sandbox Code Playgroud)
使用sleep等待执行进入AngularJS上下文(由click事件触发).
And*_*s D 25
你不需要等待.量角器自动等待角度准备就绪,然后执行控制流程中的下一步.
小智 6
使用量角器,可以使用以下方法
var EC = protractor.ExpectedConditions;
// Wait for new page url to contain newPageName
browser.wait(EC.urlContains('newPageName'), 10000);
Run Code Online (Sandbox Code Playgroud)
所以您的代码看起来像
emailEl.sendKeys('jack');
passwordEl.sendKeys('123pwd');
btnLoginEl.click();
var EC = protractor.ExpectedConditions;
// Wait for new page url to contain efg
ptor.wait(EC.urlContains('efg'), 10000);
expect(ptor.getCurrentUrl()).toEqual(url + 'abc#/efg');
Run Code Online (Sandbox Code Playgroud)
注意:这可能并不意味着新页面已完成加载并且DOM已准备就绪。随后的'expect()'语句将确保Protractor等待DOM可用于测试。
参考:量角器的预期条件
| 归档时间: |
|
| 查看次数: |
140237 次 |
| 最近记录: |