Подождите, пока ngOnInit завершит загрузку в Puppeteer sh - PullRequest
0 голосов
/ 10 января 2020

Я построил приложение на стеке MEAN.

У меня есть страница отчета, где пользователь должен ввести пароль, после чего он сможет просматривать отчет.

Когда страница загружается, в методе Angular ngOnInit () я делаю HTTP-запрос на получение пароля для отчета и сохраняю его в переменной с именем password в файле TS.

Если пользователь вводит тот же пароль и нажимает кнопку «Отправить», отображается отчет.

Все отлично работает.

Я использую Puppeteer для тестирования. Я смог ввести пароль с помощью кода, я также смог сделать клик. Но на скриншоте видно, что я ввел неверный пароль. Это возможно, если запрос ngOnInit не сделан до того, как нажата кнопка подтверждения.

Ниже приведен мой код в NodeJS для скриншота с использованием Puppeteer.

const puppeteer = require('puppeteer');

class Webpage {
static async generatePDF(url) {

    const browser = await puppeteer.launch({ headless: true }); 
    const page = await browser.newPage();

    await page.setViewport({width: 1600, height: 1, deviceScaleFactor: 1});
    await page.goto(url, {waitUntil: 'networkidle2'}); // Adjust network idle as required.

    await page.waitFor(4000);

    await page.waitFor('input[name=password]');

    await page.$eval('input[name=password]', el => el.value = '123456');

    await page.$eval('button[name=button]', el => el.click());


    const testConfig = {
        path: 'shot.jpeg', // Saves pdf to disk.
        type : 'jpeg',
        quality : 100,
        fullPage : true,
        printBackground: true
    };

    await page.screenshot(testConfig);

    await browser.close();

   }
}



(async() => {


const url = 'https://example.com/reportPage';

const buffer = await Webpage.generatePDF(url);

console.log('success');

})();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...