Кукловод не выполняет анонимную функцию на странице - PullRequest
0 голосов
/ 01 апреля 2020

Для моих тестов я хотел бы войти на эту страницу: 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-файлам будет содержать форму входа.

Чтобы увидеть это в действии, откройте личную вкладку в своем любимом браузере, откройте инструменты разработчика, настройте сетевые журналы, чтобы сохранить их, и посетите стр. Первые сетевые запросы будут выглядеть так: dev tool

Используя следующий скрипт 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, потому что содержимое функции динамически создается сервером.

Есть ли способ разрешить выполнение этой анонимной функции при загрузка страницы?

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