Как ждать когда страница обновляется в Puppeteer? - PullRequest
0 голосов
/ 17 февраля 2020

У меня есть приложение, с которым я работаю, которое ведет себя следующим образом ... Вы посещаете URL /refresh, и оно загружает страницу с показом загрузчика / счетчика / бара в течение примерно 5 секунд, а затем обновляет страница после того, как это сделано. Он делает это так, что может загружать последние данные, которые были вычислены во время /refresh.

. Сейчас я просто устанавливаю тайм-аут, превышающий время, в течение которого загрузчик , скорее всего, останется, но это является хрупким, потому что плохое сетевое соединение может поставить его через линию.

Как я могу вместо этого "наблюдать" за тем, когда произойдет refre sh? Какую технику вы бы порекомендовали. Кажется, он начинает очень быстро становиться волосатым.

В мелкую мелочь, когда загрузчик показывает, когда он заканчивает работу, он уходит за полсекунды до перезагрузки страницы. Так что я не могу просто ждать, пока загрузчик не исчезнет. Кажется, мне нужно хранить в DOM какую-то переменную состояния, как в localStorage, но я не могу это точно определить. Хотелось бы помочь.

1 Ответ

0 голосов
/ 17 февраля 2020

ну, вы могли бы "наблюдать" за элементом, который отображает данные, используя page. $ (Селектор) , или, если такого элемента нет, вы также можете дождаться ответа указанного c запроса:

const waitForResponse = (page, url) => {
    return new Promise(resolve => {
        page.on("response", function callback(response){
            if (response.url() === url) {
                resolve(response);
                page.removeListener("response",callback)
            }
        })
    })
};

const res = await waitForResponse(page,"url of the request you want to wait for");

Ожидание сетевого запроса перед продолжением процесса

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