обратные вызовы/обещания для повторно используемых методов в Protractor

Должны ли мы писать обратные вызовы/обещания для повторно используемых методов в тестировании на основе шаблона объекта страницы в 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      
    });

Класс страницы:

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;

person AdityaReddy    schedule 25.08.2016    source источник
comment
вам не нужно добавлять обратный вызов, пока вы не укажете конкретную причину   -  person Optimworks    schedule 25.08.2016
comment
@SureshSalloju Прямо сейчас у нас есть только команды webdriverJs, и они связаны из-за ControlFlow. Но что, если у нас есть действия, отличные от webdriverjs. Кроме того, возможно ли возвращать значения без обратных вызовов?   -  person AdityaReddy    schedule 26.08.2016


Ответы (1)


Да, можете.

Просто возвращая значения или обещания:

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

И должны разрешать их на уровне спецификации внутри блоков «it», как показано ниже:

it('Page should have a title', function() {
    expect(Page.goHome()).toEqual('Home Page');
  });
person Vishal Aggarwal    schedule 07.01.2017