Кукольник Node.js - Как установить время ожидания навигации?

Я использую node.js и puppeteer, чтобы получить некоторые данные. Некоторые файлы, которые я открываю, довольно большие... и затем я получаю сообщение об ошибке:

Ошибка:

our error { TimeoutError: Navigation Timeout Exceeded: 30000ms exceeded
    at Promise.then (/project/node_modules/puppeteer/lib/NavigatorWatcher.js:74:21)
    at <anonymous> name: 'TimeoutError' }

Как я могу игнорировать это или установить более высокий тайм-аут?

Вот мой сценарий:

await page.goto('url'+tableCell04Val, {waitUntil: 'load'});

Ответы

Ответ 1

Вы можете использовать timeout: 0 для отключения ошибок timeout, если вы загружаете тяжелую страницу.

Используйте его на своей page.goto.

await page.goto('url'+tableCell04Val, {waitUntil: 'load', timeout: 0});

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

Ответ 2

ОБНОВЛЕНИЕ 2019

Вы также можете изменить поведение страницы, начиная с версии 1.0.0:

await page.setDefaultNavigationTimeout(0); 

Параметр - это время ожидания в миллисекундах.

Рекомендации:https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#pagesetdefaultnavigationtimeouttimeout https://pptr.dev/#?product=Puppeteer&version=v1.17.0&show=api-pagesetdefaultnavigationtimeouttimeout

Ответ 3

Вы можете установить тайм-аут, как это

await page.goto('url'+tableCell04Val, {waitUntil: 'load', timeout: 10000}).then(() => {
    console.log('success')
}).catch((res) => {
    console.log('fails', res)
})

Ответ 4

В Puppeteer есть два метода для обработки таймаутов:

а) page.setDefaultNavigationTimeout(timeoutInMiliseconds)

Это влияет на функции, связанные с навигацией:

•   page.goBack([options])
•   page.goForward([options])
•   page.goto(url[, options])
•   page.reload([options])
•   page.setContent(html[, options])
•   page.waitForNavigation([options])

б) page.setDefaultTimeout(timeoutInMiliseconds)

Это влияет на все предыдущие функции Navegation плюс все функции Ожидания:

•   page.waitFor(selectorOrFunctionOrTimeout[, options[, ...args]])
•   page.waitForFunction(pageFunction[, options[, ...args]])
•   page.waitForRequest(urlOrPredicate[, options])
•   page.waitForResponse(urlOrPredicate[, options])
•   page.waitForSelector(selector[, options])
•   page.waitForXPath(xpath[, options])

ПРИМЕЧАНИЕ: page.setDefaultNavigationTimeout имеет приоритет над page.setDefaultTimeout