我假设browser.wait应该是一个阻塞调用,但它并没有像我预期的那样工作。这是我的示例:
describe("browser.wait", function() {
beforeEach(function() {
browser.wait(function() {
console.log('1 - BeforeEach WAIT');
return true;
});
console.log('2 - BeforeEach after wait');
});
afterEach(function() {
browser.wait(function() {
console.log('4 - afterEach WAIT');
return true;
});
console.log('5 - afterEach after wait');
});
it('should probably actually wait.', function() {
console.log('3 - IT statement');
expect(1).toBe(1);
});
现在,因为我假设browser.wait实际上是阻塞的,所以我认为我的console.log调用会按顺序运行;1,2,3,4,5;
我实际得到的输出是:
2 - BeforeEach after wait
1 - BeforeEach WAIT
3 - IT statement
5 - afterEach after wait
4 - afterEach WAIT
我该如何使用browser.wait来实现等待?或者我完全使用了错误的函数?我需要阻塞代码,直到浏览器完成前往下一个位置以供下一次调用使用。
Promise
。其中的例子展示了如何使用driver.wait()
方法来等待一个函数started
执行完成,并在5秒内完成执行,如果超时则会返回错误信息"Server should start within 5 seconds"。最后再调用driver.get()
方法来获取服务器URL。请参考以下链接:https://angular.github.io/protractor/#/api?view=webdriver.WebDriver.prototype.wait - atothdriver.get()
函数实际上应该包装在已完成的Promise中。 - bob.mazzo