Я построил приложение на стеке 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');
})();