2016-08-25 1 views
3

Devrions-nous écrire des rappels/promesses pour les méthodes réutilisables dans le test basé sur le modèle d'objet de page dans Protractor? Par exemple .. J'ai le code de test ci-dessous et les objets Page et son fonctionnement bien sans problèmes. Mais devrais-je ajouter des rappels pour les méthodes réutilisables dans la classe de page?callbacks/promesses pour les méthodes réutilisables dans Protractor

describe('This is a test suite for Login cases',function(){ 
    beforeEach(function() { 
     LoginPage.goHome(); 
     LoginPage.doLogin(); 
    }); 
    afterEach(function() { 
     LoginPage.doLogout(); 
    }); 
    it('Scenario1_Login_VerifyFirstName',function(){ 
      //Some Test step  
    }); 

page Classe:

var Login = { 

    PageElements: { 
     emailInput: element(by.css('.email')), 
     passwordInput: element(by.css('.password')), 
     loginForm: element(by.css('.form')), 
     logout: element(by.linkText('LOG OUT')) 
    }, 
    goHome: function goHome() { 
     browser.get('/signin'); 
     browser.driver.manage().window().maximize(); 
    }, 
    doLogin: function doLogin() { 
     this.PageElements.emailInput.sendKeys(UserName); 
     this.PageElements.passwordInput.sendKeys(Password); 
     this.PageElements.loginForm.submit(); 
    }, 
    doLogout: function doLogout() { 
     browser.wait(EC.elementToBeClickable(this.PageElements.profileLink)); 
     this.PageElements.profileLink.click(); 
     this.PageElements.logout.click(); 
    } 
}; 

module.exports = Login; 
+0

vous n'avez pas besoin d'ajouter le rappel jusqu'à ce que vous un raison spécifique –

+0

@SureshSalloju Pour le moment, nous n'avons que des commandes webdriverJs et elles sont chaînées grâce à ControlFlow. Mais que se passe-t-il si nous avons des actions non webdriverjs. En outre, est-il possible de renvoyer des valeurs sans rappels? – AdityaReddy

Répondre

0

Oui, vous pouvez.

En retournant simplement des valeurs ou des promesses:

goHome: function() { 
    browser.get('/home'); 
    return browser.getTitle(); 
}, 

et devrait les résoudre au niveau de la spécification à l'intérieur «il » blocs comme ci-dessous:

it('Page should have a title', function() { 
    expect(Page.goHome()).toEqual('Home Page'); 
    });