Как перезагрузить страницу в Puppeteer?

Ах, моя проблема в том, что я забыл включить __declspec (dllexport) в подходящие места при создании библиотеки (можете ли вы сказать, что я не занимаюсь программированием Windows?).

0
задан glhe13 19 March 2019 в 09:15
поделиться

3 ответа

Мне удается решить это, используя цикл while.

for (let appUrl of appUrls) {
    var count = i++;

    while(true){
        try{

            await page.goto(appUrl);

            const appName = await page.$eval('div.det-name-int', div => div.innerText.trim());

            console.log('\n' + count);
            console.log('Name: ' , appName);

            break;

            } catch(e){
              console.log('\n' + count);
              console.log('ERROR');
              await page.reload(appUrl);

              continue;
            }

}
0
ответ дан glhe13 19 March 2019 в 09:15
поделиться

Итак, после комментариев, следующая строка делает ошибку.

ERROR Error: Error: failed to find element matching selector "div.det-name-int"

потому что Puppetteer имеет обратный вызов браузера. Когда он находит элемент и вызывает обратный вызов, и если элемент не существует, он выдает ошибку.

Также страница перезагружается. Вы ничего не делаете после этого. Если вы хотите получить изображение после этого. Используйте

await page.$eval('div.det-name-int', div => div.innerText.trim());

после перезагрузки. Или вы можете использовать цикл while для непрерывной проверки существования элемента. Если этого не произойдет, обновите страницу и проверьте снова. Это гарантирует, что у вас всегда будет контент.

Но если ваш контент генерируется динамически и не является частью DOM в тот момент, когда вы читаете страницу, тогда ваш код становится бесполезным. Вам может понадобиться добавить тайм-аут, а затем найти в домене элемент.

0
ответ дан AshTyson 19 March 2019 в 09:15
поделиться

Вы всегда можете перезагрузить страницу через DOM, например:

await page.evaluate(() => {
   location.reload(true)
})

или вот множество способов , как вы можете перезагрузить страницу с помощью браузера JS через DOM
[ 114]

Кроме того, вы можете перемещать кукловода назад и вперед . Как это:

await page.goBack();
await page.goForward();
0
ответ дан Grynets 19 March 2019 в 09:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: