web-dev-qa-db-fra.com

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

J'utilise node.js et marionnettiste pour obtenir des données. Certains des fichiers que j'ouvre sont assez volumineux ... puis 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é?

Voilà mon script:

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

Vous pouvez utiliser timeout: 0 pour désactiver les erreurs de délai d'attente 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.

39
Jay Gould

MISE À JOUR 2019

Vous pouvez également modifier le comportement de la page depuis la V1.0.0:

await page.setDefaultNavigationTimeout(0); 

Le paramètre est le délai d'expiration en millisecondes.

Références: https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#pagesetdefaultnavigationtimeouttimeouthttps://pptr.dev/#?product=Puppeteer&version= v1.17.0 & show = api-pagesetdefaultnavigationtimeouttimeout

15
Juanmabs22

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 de Navegation précédentes 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])

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

5
Juanma Menendez

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)
})
4
Henry
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

0
Rexben