如何在 Puppeteer UI 自动化代码中处理页面导航

问题描述 投票:0回答:1

这是用于用户名和密码的 Web 应用程序的自动化代码:

const puppeteer = require('puppeteer');
const expect = require('chai').expect;

describe("User Login",()=>{
    
    let browser;
    let page;

    before(async function(){
        browser = await puppeteer.launch({
            headless:false,
            slowMo:100
        });
        page = await browser.newPage();
        await page.goto('https://www.test.com');
        await page.waitForSelector('input[name=UserName]');

    });

    it("Successful login",async()=>{
        await page.type('input[name=UserName]', 'test', {delay: 20});
        await page.type('input[name=Password]', 'test', {delay: 20});
        const button = await page.$('input[id=submitCredentials]');
        await button.click();
              
        //await page.waitForSelector('.item-group security-question');
    });

    after(async function(){
        await browser.close();
    })
});

登录成功后,应用程序将导航到不同的页面,我找不到在 puppeteer 中获取页面对象的方法,我可以用它来验证登录是否成功。有什么建议吗?

mocha.js puppeteer chai
1个回答
0
投票

我确实找到了问题的解决方案:Codota

这是修改后的代码:

const puppeteer = require('puppeteer');
const expect = require('chai').expect;

describe("User Login",()=>{
    
    let browser;
    let page;

    before(async function(){
        browser = await puppeteer.launch({
            headless:false,
            slowMo:100
        });
        page = await browser.newPage();
        await page.goto('https://www.test.com');
        await page.waitForSelector('input[name=UserName]');

    });

    it("Successful login",async()=>{
        await page.type('input[name=UserName]', 'test', {delay: 20});
        await page.type('input[name=Password]', 'test', {delay: 20});
        const button = await page.$('input[id=submitCredentials]');
        const navigationPromise = page.waitForNavigation();
        await button.click();
        await navigationPromise;
        await page.waitForSelector('div[class="item-group security-question"]');
        const question = await page.$eval('input[id=QuestionId]', element => element.textContent);
        expect(question).to.be.not.null;
    });

    after(async function(){
        await browser.close();
    })
});
© www.soinside.com 2019 - 2024. All rights reserved.