我为angular.js应用程序使用量角器编写了一些测试。我正在使用Page Objects设计模式,并且有一些方法可以通过单击链接和按钮来导航到其他页面。不久之后我打电话给我browser.waitForAngular()。
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()从页面对象方法中删除并在我像这样进行方法调用后调用它…
angular could not be found on the window
修改页面对象
... this.goToCompanyPage = function () { this.companyNameLink.click(); }; ...
规格文件
dashboardPage.goToCompanyPage(); browser.waitForAngular();
是打电话browser.waitForAngular()引起问题吗?我应该在哪里打电话,waitForAngular有关如何使用此功能的最佳做法?
waitForAngular
从量角器的文档中:
指示webdriver等到Angular完成渲染并且没有未完成的$ http或$ timeout调用后再继续。请注意,量角器在每个WebDriver操作之前自动应用此命令。
您根本不应该打电话给我,我想不出您应该使用的有效案例。