javascript - 如何在 Protractor 中从基本 js 文件继承函数?

标签 javascript node.js jasmine protractor

我从使用 java 的自动化框架开发转向 Protractor 和 javascript,所以这对我来说是新的。在我的 Protractor 框架中,我需要创建一个带有全局函数的基本屏幕 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”);
                  });
    });
});

最佳答案

如果您使用的是 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')
    })
})

关于javascript - 如何在 Protractor 中从基本 js 文件继承函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44215075/

相关文章:

javascript - 等待从 javascript 函数返回直到满足条件

node.js - PM2受管服务器导致跨域请求被阻止

javascript - 使用 Jasmine 测试触发异步请求的方法

unit-testing - Jasmine 路线 spy - 未定义不是一个对象(评估 'navigate.calls.mostRecent().args' )

javascript - Jasmine 断言调用顺序

javascript - jquery flippy - 停止翻转发生

javascript - 基本的 getJSON 问题——第二个参数似乎总是被忽略

javascript - MooTools 正在搞乱 Facebook JavaScript SDK

node.js - brew 卸载 Node 错误 Alpine 脉

html - 检查 html 表中的重复行