Rapporteur - l'endroit Où l'utilisation du navigateur.waitForAngular()
J'ai quelques tests écrits à l'aide de rapporteur pour angular.js app. Je suis à l'aide de Page Objects
modèle de conception, et là, j'ai quelques méthodes que naviguer vers d'autres pages en cliquant sur les liens et les boutons. et peu de temps après que je l'appelle browser.waitForAngular()
.
Objet Page
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();
};
};
Et, dans certains fichier spec-je utiliser cette page un objet comme ça..
var DashboardPage = require('../dashboardPageObject.js');
dashboardPage = new DashboardPage();
...
dashboardPage.goToCompanyPage();
Mais le problème est que parfois j'ai l' angular could not be found on the window
erreur et mes tests échouent. La plupart du temps l'exécution des tests. Ce problème est aléatoire. Ma question est que dois-je enlever la browser.waitForAngular()
à partir de la page méthode de l'objet et de l'appeler une fois que j'ai l'appel de la méthode comme ceci...
Page Modifiée Objet
...
this.goToCompanyPage = function () {
this.companyNameLink.click();
};
...
Fichier Spec
dashboardPage.goToCompanyPage();
browser.waitForAngular();
Appelle browser.waitForAngular()
à l'origine du problème? Où dois-je appeler waitForAngular
est-il de meilleures pratiques sur la façon de l'utiliser?
OriginalL'auteur Kasun Kodagoda | 2015-06-17
Vous devez vous connecter pour publier un commentaire.
De protractor la documentation:
Vous ne devriez pas appeler cela du tout et je n'en pense pas un cas valide où vous devriez.
Eh bien, si vous ne l'actualisation en appelant
browser.refresh
, il doit attendre pour l'opération précédente pour terminer automatiquement. J'ai juste regardé le code et vérifié que (si vous n'avez pas désactivé la fonction de synchronisation qui est). Peut-être que vous avez pris un bug, vous pouvez déposer un problème dans le rapporteur de la page github si c'est le cas.Je suis charger des données sur un côté asynchrone angulaire. À l'aide de waitForAngular je peux tester le composant. Sinon, rapporteur vérifie si aucune donnée n'est encore reçu
OriginalL'auteur Delian Mitankin
Au lieu d'utiliser
waitForAngular
, vous devez gérer la promesse retourné parclick
.Ainsi, tout d'abord, votre page méthodes de l'objet doit retourner ces promesses:
Ensuite, l'utilisation de cette méthode peut ressembler à ceci:
Pour d'autres exemples, voir mon etat/la page de l'objet-version de l'angle de PhoneCat Rapporteur de la suite de tests.
button.click().then(() => {expect(browser.getCurrentUrl()).toEqual(newPageUrl);});
mais j'ai toujours l'ancienne url.OriginalL'auteur avandeursen
Je suis en utilisant le navigateur.WaitForAngular() avant de naviguer vers une page spécifique via un navigateur.Url
Sinon, j'ai des erreurs dans le navigateur du journal dont je suis affirmant pour le test de nettoyage.
OriginalL'auteur Alexander Zhidkov