Для моих тестов я хотел бы войти на эту страницу: https://www.ebay-kleinanzeigen.de/m-einloggen.html
При первом запросе эта страница возвращает страницу, подобную следующей:
<html><head><meta charset="utf-8">
<script>
function(){/* some logic*/}();
</script>
</head><body></body></html>
Этот скрипт имеет функции и анонимную функцию, которая должна выполняться при загрузке страницы браузером.
В обычном браузере эта функция запускает запрос xhr (где сервер будет устанавливать файлы cookie), а затем перезагружает на той же странице, которая благодаря cookie-файлам будет содержать форму входа.
Чтобы увидеть это в действии, откройте личную вкладку в своем любимом браузере, откройте инструменты разработчика, настройте сетевые журналы, чтобы сохранить их, и посетите стр. Первые сетевые запросы будут выглядеть так:
Используя следующий скрипт Puppeteer, браузер не выполняет анонимную функцию и застревает в ожидании формы входа, которая никогда Появляется:
import puppeteer from 'puppeteer';
const main = async () => {
try {
const browser = await puppeteer.launch({devtools: true});
const page = await browser.newPage();
await page.goto('https://www.ebay-kleinanzeigen.de/m-einloggen.html');
await page.waitForSelector('#login-form', { visible: true });
await page.screenshot({path: 'login.png', fullPage: true})
await browser.close();
} catch (e) {
console.log('error',e);
}
}
main();
Я не могу использовать page.evaluate
, потому что содержимое функции динамически создается сервером.
Есть ли способ разрешить выполнение этой анонимной функции при загрузка страницы?