58 votes

Marionnettiste Node.js - Comment définir le délai de navigation?

J'utilise node.js et puppeteer pour obtenir des données. Certains des fichiers que j'ouvre sont assez volumineux ... et j'obtiens une erreur:

Erreur:

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

Comment puis-je l'ignorer ou définir un délai d'expiration plus élevé?

C'est mon script:

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

87voto

Jay Gould Points 1655

Vous pouvez utiliser timeout: 0 pour désactiver les erreurs de délai d'expiration si vous chargez une page lourde.

Utilisez-le dans votre page.goto comme:

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

Vous pouvez voir le PR fait à Pupeteer ici qui a ajouté le changement, ainsi que la documentation et les tests unitaires qui l'implémentent.

22voto

Juanma Menendez Points 370

Il existe deux méthodes pour gérer les délais d'expiration dans Puppeteer:

a) page.setDefaultNavigationTimeout(timeoutInMiliseconds)

Il affecte les fonctions liées à Navegation:

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

b) page.setDefaultTimeout(timeoutInMiliseconds)

Il affecte toutes les fonctions précédentes de Navegation ainsi que toutes les fonctions d'attente:

 •   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])

REMARQUE : page.setDefaultNavigationTimeout a priorité sur page.setDefaultTimeout

8voto

Henry Points 429

Vous pouvez définir un délai comme celui-ci

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

5voto

Rexben Points 83
await page.goto('url'+tableCell04Val, {  waitUntil: 'networkidle2',timeout: 0});

networkidle2 est pratique pour les pages qui effectuent des interrogations longues ou toute autre activité secondaire.

Vérifiez https://github.com/puppeteer/puppeteer/issues/1552#issuecomment-350954419

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X