Как ждать перезагрузки страницы, вызванной событием, с помощью Puppeteer? - PullRequest
0 голосов
/ 10 марта 2019

Я пытаюсь безопасно обработать поведение страницы, которая использует событие в браузере для элемента select для запуска перезагрузки страницы (POST).URL-адрес тот же, но страница перезагружается с тем же HTML-кодом, и единственное отличие заключается в порядке сортировки содержимого в таблице.Я перепробовал несколько методов, но почему-то ни один из них не является надежным, как мне добиться чего-то подобного:

    try {
        await page.select('select[name=sort]', 'size'); 
        await page.waitForNextPageReload();
        await page.waitForSelector('select[name=sort]');
    } catch (error) {
        console.log('Error sorting page.');
    }

В принципе, waitForNextPageReload не существует, но я ищу что-то, что могло бы дать аналогичные результаты.Я пытался добавить «задержки», но я ищу что-то более надежное для правильного управления ошибками.

Ответы [ 2 ]

1 голос
/ 10 марта 2019

Может быть условие гонки между обещаниями выбора и навигации (см. Примеры здесь или здесь ). Можете ли вы попробовать этот подход?

await Promise.all([
  page.select('select[name=sort]', 'size'),
  page.waitForNavigation(),
]);

await page.waitForSelector('select[name=sort]');
1 голос
/ 10 марта 2019

Попробуйте page.waitForNavigation.

Цитата из документации кукловода:

Это разрешается, когда страница переходит на новый URL или перезагружается. Это полезно, когда вы запускаете код, который косвенно приводит к навигации по странице.

Кажется, это хорошо для вашего случая использования, когда вы косвенно перезагружаете страницу

...