简体   繁体   English

Protractor中可重用方法的回调/承诺

[英]callbacks/promises for the re-usable methods in Protractor

Should we write callbacks/promises for the re-usable methods in Page Object Pattern based testing in Protractor? 我们是否应该在Protractor中基于页面对象模式的测试中为可重用方法编写回调/承诺?

For example .. I have the below test code and Page Objects and its working fine without issues. 例如..我有以下测试代码和页面对象及其工作正常没有问题。 But should I add callbacks for re-usable methods in page class? 但是我应该在页面类中为可重用的方法添加回调吗?

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 Class: 页面类:

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;

Yes you can. 是的你可以。

By simply returning values or promises: 只需返回值或承诺:

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

And should resolve them on spec level inside "it" blocks like below: 并且应该在“it”块内的规范级别解决它们,如下所示:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM