Я автоматизирую регрессионное тестирование для веб-сайта, и одной из задач является проверка загрузок PDF.Для этого я использую Puppeteer и Chromium.Я обнаружил, что довольно сложно загружать файлы в автономном режиме.Вместо того, чтобы скачивать файл, я подумал, что было бы разумно искать ответ на странице и размер файла.Моя проблема: когда я пытаюсь перейти на страницу, кажется, ничего не происходит.Я получаю ошибку тайм-аута.Вот код, который я пытаюсь использовать:
const filename = new RegExp('\S*(\.pdf)');
await page.waitForSelector('#download-pdf', {timeout: timeout});
console.log('Clicking on "Download PDF" button');
const link = await page.$eval('#download-pdf', el => el.href);
await Promise.all([
page.goto(link),
page.on('response', response => {
if(response._headers['content-disposition'] === `attachment;filename=${filename}`){
console.log('Size: ', response._headers['content-length']);
}
})
]);
РЕДАКТИРОВАТЬ
Если кто-то понимает, как page.goto()
игнорирует .pdf
страниц, это будет очень полезно для меня.
Позвольте мне лучше определить проблему.При нажатии кнопки download pdf
на веб-странице запускается событие, которое генерирует файл PDF и отправляет пользователю уникальный URL-адрес.Этот URL-адрес уничтожается через короткий промежуток времени.Чтобы достичь этого, я считаю, что должен использовать page.click()
, чтобы вызвать событие и сгенерировать URL.Однако page.click()
также пытается перейти к URL-адресу PDF, который отклоняется в режиме без заголовка.Что мне нужно сделать, это получить URL и проверить ответ от него.