量角器 - 在哪里使用browser.waitForAngular() [英] Protractor - Where to use browser.waitForAngular()

查看:76
本文介绍了量角器 - 在哪里使用browser.waitForAngular()的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用protractor为angular.js app编写了一些测试。我正在使用页面对象设计模式,我有一些方法可以通过单击链接和按钮导航到其他页面。不久之后我打电话给 browser.waitForAngular()

I have some tests written using protractor for angular.js app. I am using Page Objects design pattern and there i have some methods that navigate to other pages by clicking on links and buttons. and soon after that i am calling browser.waitForAngular().

Page Object

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();
    };
};

在某些规格文件中我使用此页面对象..

And in some spec file i use this page object like this..

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

...

dashboardPage.goToCompanyPage();

但问题是有时我得到的角度无法找到窗口错误,我的测试失败。大多数时候测试运行。这个问题是随机的。我的问题是,如果我从页面对象方法中删除 browser.waitForAngular()并在我按此方法调用之后调用它...

But the problem is sometimes i get the angular could not be found on the window error and my tests fail. Most of the time the tests run. This issue is random. My question is that should i remove the browser.waitForAngular() from the page object method and call it after i make the method call like this...

修改后的页面对象

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

规格文件

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

正在调用 browser.waitForAngular()导致问题?我应该在哪里调用 waitForAngular 有没有关于如何使用它的最佳做法?

Is calling browser.waitForAngular() causing the issue? Where should i call waitForAngular is there any best practice on how to use this?

推荐答案

来自量角器的文档


指示webdriver等到Angular完成呈现并且在继续之前没有未完成的$ http或$ timeout调用。请注意,Protractor会在每次WebDriver操作之前自动应用此命令。

Instruct webdriver to wait until Angular has finished rendering and has no outstanding $http or $timeout calls before continuing. Note that Protractor automatically applies this command before every WebDriver action.

您根本不应该调用此命令,我无法想到有效的情况你应该。

You shouldn't be calling this at all and I cannot think of a valid case where you should.

这篇关于量角器 - 在哪里使用browser.waitForAngular()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆