尝试捕获中的browser.wait()未能按预期工作,最佳方法是什么?

时间:2018-12-21 11:57:57

标签: javascript selenium selenium-webdriver protractor

背景

这是一个我需要使用量角器自动化的角度应用程序。但是,我必须设置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所示正常进行。但是,有时它似乎在第一次等待浏览器时失败(因为由于页面加载速度很快,没有显示微调器),并且它没有进入捕获并打印到控制台并继续进行测试。

任何帮助将不胜感激。

0 个答案:

没有答案