У меня есть некоторые тесты, написанные с использованием транспортира для приложения angular.js. Я использую шаблон оформления Page Objects
, и там у меня есть некоторые методы, которые переходят на другие страницы, нажимая на ссылки и кнопки. и вскоре после этого я звоню browser.waitForAngular()
.Транспортир - Где использовать 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();
};
};
И в каком-то файле спецификации я использовать эту страницу объекта, как это ..
var DashboardPage = require('../dashboardPageObject.js');
dashboardPage = new DashboardPage();
...
dashboardPage.goToCompanyPage();
Но проблема иногда я получаю ошибку angular could not be found on the window
и мои тесты не , Большую часть времени тесты проходят. Эта проблема случайна. Мой вопрос заключается в том, что я должен удалить browser.waitForAngular()
из метода страницы объекта и вызвать его после того, как я сделать вызов метода, как это ...
Modified Page Object
...
this.goToCompanyPage = function() {
this.companyNameLink.click();
};
...
Spec Файл
dashboardPage.goToCompanyPage();
browser.waitForAngular();
Вызывает ли проблема browser.waitForAngular()
? Где я должен позвонить waitForAngular
, есть ли какая-либо передовая практика по использованию этого?
У меня есть этот прецедент, как в, проверьте изменения, сделанные на странице после обновления. Внесите изменения -> нажмите save (не запустите обновление страницы) -> обновить -> проверьте перезагруженную страницу. В этом случае обновление запускается до завершения функции сохранения, вызывая ненужные предупреждения браузера на странице. Мне пришлось использовать waitForAngular() перед запуском обновления на странице. –
Ну, если вы делаете обновление, вызывая 'browser.refresh', он должен дождаться завершения предыдущей операции. Я просто посмотрел на код и проверил, что [он делает] (https://github.com/angular/protractor/blob/3.0.0/lib/protractor.js#L726) (если вы не отключили функцию синхронизации то есть). Может быть, вы поймали ошибку - вы можете указать проблему на странице gytub gractub (https: // github.com/угловой/транспортир/проблемы), если это так. –