背景
这是一个我需要使用量角器自动化的角度应用程序。但是,我必须设置browser.waitForAngularEnabled(false);
并实现自己的等待功能,因为Protractor的等待HTTPS请求完成的本机功能无法很好地与我们的应用程序配合使用。
现在解决当前问题。对于某些页面,在与元素进行交互之前,我们必须等待微调框出现,然后再去微调框,否则您将遇到典型的异常,例如以下
Failed: unknown error: Element <button _ngcontent-c16="" color="accent" data-testing-id="btnAddService" mat-fab="" class="mat-fab mat-accent" ng-reflect-color="accent">...</button> is not clickable at point (1462, 673). Other element would receive the click: <div _ngcontent-c17="" class="loading-shade centre ng-star-inserted">...</div>
(Session info: chrome=71.0.3578.98)
(Driver info: chromedriver=2.45.615291 (ec3682e3c9061c10f26ea9e5cdcf3c53f3f74387),platform=Windows NT 10.0.17134 x86_64)
到目前为止我尝试过的事情
this.waitForTablePageLoad = () => {
try {
browser.wait(EC.presenceOf(element(by.css("div.loading-shade.centre.ng-star-inserted"))), 5000);
browser.wait(EC.stalenessOf(element(by.css("div.loading-shade.centre.ng-star-inserted"))), 30000);
}
catch (err) {
console.log("Loading Spinners didn't show for 5 seconds, so proceeding as normal...");
}
}
这是要等待微调器/加载器出现(最多5秒钟),如果由于某种原因页面加载速度太快而导致加载器无法显示,则该页面应如catch所示正常进行。但是,有时它似乎在第一次等待浏览器时失败(因为由于页面加载速度很快,没有显示微调器),并且它没有进入捕获并打印到控制台并继续进行测试。
任何帮助将不胜感激。