2017-04-05 1 views
0

Je suis en train d'écrire des cas de test Protractor en utilisant un objet page. Cependant, j'ai de la difficulté à utiliser des éléments directement à partir du fichier Pageobject, dans le fichier spec.Obtention d'un élément à partir de pageobject dans le rapporteur

Peut-être que je manque une nuance de JS, puisque je n'ai pas écrit autant dans JS.

je voudrais utiliser certains éléments définis dans PageObject comme ceci:

var PageObject = function() 
    { 
    var loginUsername = element(by.id('loginusername')); 

    //other methods 
    }; 
    module.exports = PageObject; 

à utiliser dans le mon fichier de spec comme ceci:

var PageObject = require('./pageObject.page.js'); 



describe(' Login page ', function(){ 
    it('type something in the usernamefield', function(){ 
     var pageObject = new PageObject(); 
     pageObject.get(); 

     pageObject.loginUsername.sendKeys('Test'); 

    }); 
}); 

En utilisant des méthodes (par exemple obtenir, mais aussi d'autres) fonctionne bien, mais l'utilisation directe d'éléments provoque des erreurs non définies. Je tente de copier à partir de quelque chose comme ça, où supposément cela devrait fonctionner.

https://ramonvictor.github.io/protractor/slides/#/33

+0

Pour ajouter, ive maintenant contournèrent le en créant une méthode appelée getUserName qui renvoie l'élément. Cependant, je pense que l'appel direct de variables serait plus agréable dans un programme de test. – WalterTreeglove

+1

Quel est le problème en utilisant la fonction standard? –

+0

Pourriez-vous élaborer sur "problème" et "quelques erreurs non définies"? – Siguza

Répondre

1

Quelque chose vous manque,

lier votre variable objet à pageObject.page.js, en utilisant ce mot-clé

var PageObject = function() 
    { 
     this.loginUsername = element(by.id('loginusername')); 
     ...... 
    }; 
module.exports = PageObject; 

Dans Spec d'abord obtenir la vraie application et faire du vrai travail

it('type something in the usernamefield', function(){ 
     browser.get('"https://....'); 
     var pageObject = new PageObject(); 
     pageObject.loginUsername.sendKeys('Test'); 

    }); 

Cela fonctionne pour moi parfait,

+0

Merci Surendra, je vois maintenant que j'ai raté la liaison de la variable à l'objet. – WalterTreeglove