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'});
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 é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
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
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)
})
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