如何在Protractor中从基础js文件继承函数?

时间:2017-05-27 09:15:18

标签: javascript node.js jasmine protractor

我从使用java的自动化框架开发转向量角器& javascript所以这对我来说是新的。在我的量角器框架中,我需要创建一个基本屏幕js文件,其中包含可以从其他屏幕js文件调用的全局函数。请参阅以下示例。如何使login.js继承base.js中的所有函数,这样在login.js中直接调用base.js函数时,loginTest.js中的测试会有效吗?

base.js

var base= function(){

    var that = {
        navigateToLogin: function(url){
        browser.get(url);
        browser.driver.manage().window().maximize();
        return require('login.js');
        },

        click: function(element, page){
            element.click();
            console.log('LOG: Clicked on element ' + element);
            return that || page;
        },

         insert: function(element, text){
            element.clear().then(function() {
                element.sendKeys(text);
                console.log('LOG: Insert text: ' +text);
            });
            return that;
        },
    };
    return that;
};
module.exports = new base();

login.js

var login = function(){

    var that = {

        func1: function() {
         // do something
                        return that 
        },

        func2: function() {
           // do something

                       return that;
        },
            };
    return that;
};
module.exports = new login();

loginTests.js

describe('Login tests - ', function() {

    var loginPage = require('login.js');

       describe('Success login: ', function () {

        beforeEach(function () {
            loginPage.navigateToLogin(“http://login.url”);
                   });

        it("Success login as admin",function(){
           loginPage.insert(“element(by.name("username"))”,”admin@mail”l)
                           .insert(“element(by.name("password"))”,”12345”)                             
                       .click(“element(by.name("loginButton"))”,“home.js”);
                  });
    });
});

1 个答案:

答案 0 :(得分:1)

如果您使用的是node.js> 4(5和更多)尝试使用ES6类 -

<强> basepage.js:

class BasePage {
    constructor() {

    }

    open() {
        browser.get(url);
        browser.driver.manage().window().maximize();
    }
}
exports = BasePage

<强> loginpage.js:

class LoginPage extends BasePage {
    constructor() {
        super()
    }

    login(username, password) {
        //do your login stuff here
    }
}

exports = LoginPage

然后在你的测试中:

let LoginPage = require('loginpage.js');
describe('Login tests - ', function () {
    let loginPage = new LoginPage()  

    beforeEach(function () {
        loginPage.open('/login')
    })

    it("Success login as admin", function () {
        loginPage.login('admin', '123456')
    })
})