2014-04-16 1 views
0

Je suis relativement nouveau dans les tests Protractor et E2E, mais j'ai passé quelques jours à faire des recherches, à configurer des objets page et à créer des suites de tests, et une chose que je me pose est comment créer une bonne navigation manuelle entre les objets de la page et les pages réelles. Disons que j'ai quelques parties sur mon site qui peuvent naviguer vers d'autres parties de celui-ci; l'objet page pour un d'entre eux pourrait ressembler à ceci:Bien faire la navigation manuelle avec les objets page

var SomePartPage = function() { 
    this.btnPopUp = // button for opening some pop up 
    ... 
    this.openPopUp = function() { 
     this.btnPopUp.click(); 
     return popUpPage; 
    }; 
}; 

que je suis la ligne directrice que le retour des objets de page est une bonne chose, et je présume que la promesse de retour en appelant click() sera résolu avant renvoyant (selon le flux de contrôle de WebDriverJS).

Mais j'ai une configuration dans mon test où je veux vérifier que cette navigation se déroule correctement, et parfois cela fonctionne et parfois non. Donc je suppose que c'est parce que mon pop-up n'est pas toujours complètement chargé au moment où je veux interagir avec lui (c'est-à-dire au moment où openPopUp() est revenu).

Mes hypothèses sont-elles correctes? Et si oui, comment puis-je faire face à cela? Je peux utiliser des minuteries manuelles et des promesses bien sûr, mais je préférerais avoir une promesse qui sera résolue automatiquement lorsque mon pop-up sera complètement chargé.

+0

Est-ce votre pop-up modale ou une nouvelle fenêtre de navigateur? S'il s'agit d'une nouvelle fenêtre, vous devez basculer vers cette fenêtre avec switchTo() https://code.google.com/p/selenium/source/browse/javascript/webdriver/webdriver.js#885 –

+0

Ce n'est pas une nouvelle fenêtre ou onglet, ce qui ne devrait pas être le problème. – KasMA1990

Répondre

0

En fait, je ne pense pas que le retour attendra le click();

Je pense que vous devriez faire quelque chose de similaire:

browser.wait(this.btnPopUp.click(), timeout) 
+0

Attente sur le «clic» n'a pas beaucoup de sens, il ne cesse de cliquer sur le bouton pour ouvrir le pop-up jusqu'à ce que le temps imparti. J'ai essayé d'attendre l'apparition des éléments de la fenêtre pop (test avec isPresent), mais cela ne fonctionnait pas toujours: / – KasMA1990

Questions connexes