如何在puppeteer中创建可重用的登录功能

时间:2018-10-26 15:40:12

标签: node.js ecmascript-6 puppeteer

我正在尝试创建可重用的登录功能,但是努力使其正常工作。

我有一堆specs.js需要在每次测试前登录,因此我创建了common.js(utils)文件,其中保存了所有可重用的功能。 纯js工作正常。

const moment = require('moment');
const puppeteer = require('puppeteer');
const G_CONSTS = require('./global_consts.js');
let page;
const browser = puppeteer.launch();
page = browser.newPage();


module.exports = {

unixTimeStamp: function() {
    var timeStamp = moment().format('X');
    return timeStamp;
},

randomNumber: function(num) {
    if (!num) num = 1000;

    var randNum = Math.floor((Math.random() * num) + 1);
    return randNum;
},

login: function() {
    console.log('trash');
    page.goto(identity.serverUrl);
    page.waitForSelector(G_CONSTS.USERNAME_TEXTBOX_SELECTOR);
    page.waitForSelector(G_CONSTS.PASSWORD_TEXTBOX_SELECTOR);
    page.type(G_CONSTS.USERNAME_TEXTBOX_SELECTOR, emailAddress);
    page.type(G_CONSTS.PASSWORD_TEXTBOX_SELECTOR, CONSTS.PASSWORD);
    page.click(G_CONSTS.LOGIN_BUTTON_SELECTOR);
    page.waitFor(5000);
},

logout() {
    page.goto(identity.serverUrl + '/logout');
    page.click(G_CONSTS.LOGOUT_VERIFY_BUTTON_SELECTOR);
}

};

这是一个错误:

age = browser.newPage();
           ^

TypeError: browser.newPage is not a function

“ puppeteer”:“ ^ 1.0.0” 让我知道您是否对这种任务有更好的解决方案

1 个答案:

答案 0 :(得分:0)

如果更改为此,该怎么办:

(async() => {
    try{
        const browser = await puppeteer.launch({headless: false //or true});
        var page = await browser.newPage();
    }catch(e){
        console.log('error',e)
    }    
})();