Kas*_*oda 22 javascript testing angularjs angularjs-e2e protractor
我有一些使用protractor for 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();
};
};
Run Code Online (Sandbox Code Playgroud)
在一些spec文件中,我使用这样的页面对象..
var DashboardPage = require('../dashboardPageObject.js');
dashboardPage = new DashboardPage();
...
dashboardPage.goToCompanyPage();
Run Code Online (Sandbox Code Playgroud)
但问题是有时我得到angular could not be found on the window错误,我的测试失败了.大多数时候测试运行.这个问题是随机的.我的问题是,我应该browser.waitForAngular()从页面对象方法中删除并在我进行方法调用后调用它...
修改了页面对象
...
this.goToCompanyPage = function () {
this.companyNameLink.click();
};
...
Run Code Online (Sandbox Code Playgroud)
规格文件
dashboardPage.goToCompanyPage();
browser.waitForAngular();
Run Code Online (Sandbox Code Playgroud)
呼叫browser.waitForAngular()导致问题?我应该在哪里打电话waitForAngular有关于如何使用它的最佳做法?
而不是使用waitForAngular,你应该处理由返回的承诺click.
因此,首先,您的页面对象方法应该返回这些承诺:
this.goToCompanyPage = function () {
return this.companyNameLink.click();
};
Run Code Online (Sandbox Code Playgroud)
然后,您实际使用此方法可能如下所示:
dashboardPage.goToCompanyPage().then(function() {
// this will be executed when the click is done.
// No need for any waitForAngular.
});
Run Code Online (Sandbox Code Playgroud)
有关其他示例,请参阅Angular PhoneCat Protractor测试套件的状态/页面对象版本.
| 归档时间: |
|
| 查看次数: |
36512 次 |
| 最近记录: |