2016-08-23 1 views
0

Mon fichier PageObject:Comment attendre qu'une promesse soit résolue à partir d'un objet page qui retourne un autre objet page?

this.clickTheProvidedValueInCompanyInformation = function (item) { 
    this.innerMenu = this.companyInformation.all(by.className('innermenu')).first();  
    this.selectedItem = this.innerMenu.all(by.tagName('li')).filter(function (elem, index) { 
     return elem.getText().then(function (text) { 
      return text.toUpperCase().replace(/ |-/g, '') === item.toUpperCase().replace(/ |-/g, ''); 
     }); 
    }); 
    this.selectedItem.click(); 
    this.selectedItem.getText().then(function (text) { 
     var option = text.toString(); 
     var pageObject = option.replace(/ /g, '_').toLowerCase(); 
*******return require('./' + pageObject + '.page.js');********** 
    }) 
}; 

c'est une ligne de mon fichier de spécification:

var generalInfo = pageObject.clickTheProvidedValueInCompanyInformation('generalInformation'); 

comme vous pouvez le voir, l'appel à un autre pageObject.clickTheProvidedValueInCompanyInformation('generalInformation') retours PageObject.

Quand je tente d'accéder à ma variable generalInfo dans mes specs, il jette l'erreur

generalInfo est définie

.que puis-je faire accéder à mon PageObject retourné par la variable generalInfo.

Si je mets mon return require('./anotherPageObject.js') en dehors du getText(). Alors, cela fonctionne bien. Mais je dois faire quelques opérations sur le texte pour modifier ma convention de nommage, afin qu'il renvoie le fichier d'objet de page approprié. (Je veux renvoyer un fichier pageobject nommé comme 'general_information.page.js')

+0

S'il vous plaît contacter votre techsupport locale: Votre clavier engage apparemment capslock lors de la saisie des titres ... –

+0

@MarcB pagination convertcase.net – stuartd

Répondre

2

La méthode this.clickTheProvidedValueInCompanyInformation ne renvoie rien. Ajoutez une instruction return retourner la dernière promesse:

this.clickTheProvidedValueInCompanyInformation = function (item) { 
    this.innerMenu = this.companyInformation.all(by.className('innermenu')).first();  
    this.selectedItem = this.innerMenu.all(by.tagName('li')).filter(function (elem, index) { 
     return elem.getText().then(function (text) { 
      return text.toUpperCase().replace(/ |-/g, '') === item.toUpperCase().replace(/ |-/g, ''); 
     }); 
    }); 
    this.selectedItem.click(); 
    return this.selectedItem.getText().then(function (text) { 
     var option = text.toString(); 
     var pageObject = option.replace(/ /g, '_').toLowerCase(); 
     return require('./' + pageObject + '.page.js'); 
    }); 
}; 
pageObject.clickTheProvidedValueInCompanyInformation('generalInformation').then(function(page){ 
    console.log(page); 
});