一尘不染

量角器-在哪里使用browser.waitForAngular()

angularjs

我为angular.js应用程序使用量角器编写了一些测试。我正在使用Page Objects设计模式,并且有一些方法可以通过单击链接和按钮来导航到其他页面。不久之后我打电话给我browser.waitForAngular()

页面对象

module.exports = function () {
    this.companyNameLink = element(by.id('viewCompany'));
    this.newMeetingButton = element(by.id('newMeetingButton'));

    this.createNewGeneralMeeting = function () {
        this.newMeetingButton.click();
        browser.waitForAngular();
    };

    this.goToCompanyPage = function () {
        this.companyNameLink.click();
        browser.waitForAngular();
    };
};

在某些规范文件中,我使用此页面对象,例如:

var DashboardPage = require('../dashboardPageObject.js');
dashboardPage = new DashboardPage();

...

dashboardPage.goToCompanyPage();

但是问题是有时我会收到angular could not be found on the window错误,并且我的测试失败。大多数情况下,测试会运行。这个问题是随机的。我的问题是我应该browser.waitForAngular()从页面对象方法中删除并在我像这样进行方法调用后调用它…

修改页面对象

...
this.goToCompanyPage = function () {
    this.companyNameLink.click();
};
...

规格文件

dashboardPage.goToCompanyPage();
browser.waitForAngular();

是打电话browser.waitForAngular()引起问题吗?我应该在哪里打电话,waitForAngular有关如何使用此功能的最佳做法?


阅读 217

收藏
2020-07-04

共1个答案

一尘不染

从量角器的文档中

指示webdriver等到Angular完成渲染并且没有未完成的$ http或$
timeout调用后再继续。请注意,量角器在每个WebDriver操作之前自动应用此命令。

您根本不应该打电话给我,我想不出您应该使用的有效案例。

2020-07-04