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

Я использую 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'});

const records = await page.evaluate( () =>
{
  const page = document.createElement( 'html' );
  const page_content = document.body.textContent;

  page.innerHTML = page_content;

    return {
        'valueA' : Array.from( page.getElementsByTagName( 'valueA' ), e => e.textContent ),
        'valueB' : Array.from( page.getElementsByTagName( 'valueB' ), e => e.textContent ),
        'valueC' : Array.from( page.getElementsByTagName( 'valueC' ), e => e.textContent ),
        'valueD' : Array.from( page.getElementsByTagName( 'valueD' ), e => e.textContent )
    };
});

Ответы [ 3 ]

0 голосов
/ 21 ноября 2018

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

await page.goto('url'+tableCell04Val, {waitUntil: 'load', timeout: 10000}).then(() => {
    console.log('success')
}).catch((res) => {
    console.log('fails', res)
})
0 голосов
/ 20 июня 2019

ОБНОВЛЕНИЕ 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

0 голосов
/ 04 сентября 2018

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

Используйте его в вашем page.goto как:

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

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

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