在继续执行流程之前,Protractor会等待Angular.js进程完成。它在每一步(每次click()调用之后等)执行此操作。
我正在测试一个有很多“加载器”的应用程序,由于某种原因这些加载器没有被这种同步捕获,而且我遇到了很多错误。
我可以在每条指令后手动等待,但在每条指令后执行此等待会很好。
有没有办法为量角器同步机制添加另一个条件?
答案 0 :(得分:1)
好的,所以这有点黑客,但我发现了这种方式。量角器在每个webdriver命令后使用waitForAngular()
。 https://github.com/angular/protractor/blob/f034e010156a85cf1826b95eb7f41f50ef5a1791/lib/protractor.js#L319
您可以更改该功能,例如onPrepare:
browser.waitForAngular = function(opt_description) {
var description = opt_description ? ' - ' + opt_description : '';
var self = this;
waitUntilLoaderDissapears();
if (this.ignoreSynchronization) {
return self.driver.controlFlow().execute(function () {
return true;
}, 'Ignore Synchronization Protractor.waitForAngular()');
}
};