Как собрать несколько ответов Json после того, как я сделал событие page.click? - PullRequest
1 голос
/ 16 октября 2019

У меня две страницы. На первой странице я делаю щелчок '#btnSearch', а на вторых страницах в качестве ответа загружаются несколько файлов JSON. Мне нужно собрать данные этих файлов JSON в массив results. Моя проблема в том, что results пусто .

            await page.goto(url, { waitUntil: 'load');
            await page.click('#btnSearch');

            const results = [];

            await page.on('response', async (response) => {
                if (response.url() && response.status() == 200) {
                    console.log('XHR response received');
                    results.push(await response.json());
                }
            });
            //await page.goto(url, {waitUntil : 'networkidle0'});
            await page.waitForSelector('#statusInfo');

            console.log(results);

1 Ответ

0 голосов
/ 16 октября 2019

page.on прослушиватель событий должен быть объявлен до того, как будут выполнены сетевые запросы, которые вам нужно перехватить.

Я не уверен, как работает ваш целевой сайт, поэтому я могу ошибиться, но что если мы попытаемся изменить код следующим образом:

const results = [];

// Open the first page
await page.goto(url, { waitUntil: 'load');

// Register an event listener
await page.on('response', async (response) => {
    if (response.url() && response.status() == 200) {
        console.log('XHR response received');
        results.push(await response.json());
    }
});

// Trigger navigation to the second page
await page.click('#btnSearch');

// wait until the navigation is finished
await page.waitForNavigation(); // <-- remove the line if script errors with timeout

await page.waitForSelector('#statusInfo');

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