[英]Node.js puppeteer - How to set navigation timeout?
我正在使用 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'});
如果您正在加載大量頁面,您可以使用timeout: 0
來禁用超時錯誤。
在您的page.goto
使用它,例如:
await page.goto('url'+tableCell04Val, {waitUntil: 'load', timeout: 0});
您還可以更改自 V1.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
在 Puppeteer 中有兩種處理超時的方法:
a) page.setDefaultNavigationTimeout(timeoutInMiliseconds)
它會影響與導航相關的功能:
• page.goBack([options])
• page.goForward([options])
• page.goto(url[, options])
• page.reload([options])
• page.setContent(html[, options])
• page.waitForNavigation([options])
b) page.setDefaultTimeout(timeoutInMiliseconds)
它會影響所有以前的導航功能以及所有等待功能:
• 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
您可以像這樣設置超時
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 對於進行長輪詢或任何其他輔助活動的頁面非常方便。
檢查https://github.com/puppeteer/puppeteer/issues/1552#issuecomment-350954419
我遇到了同樣的錯誤,但沒有直接使用 node.js 應用程序。 我在使用安裝在 Ubuntu 服務器上的MagePack時遇到了這個問題。
我通過增加以下文件/ur/local/lib/node_modules/magepack/node_modules/puppeteer/libTimeoutSettings.js 中的超時來修復它
const DEFAULT_TIMEOUT = 30000
puppeteer 超時的默認值為 30 秒。 要使用自定義超時,您可以使用 setDefaultNavigationTimeout 和 setDefaultTimeout 方法或 options 參數中的 timeout 屬性。 所有情況下的等待時間都以毫秒為單位指定。
await page.setDefaultNavigationTimeout(60000);
例如
const page = await browser.newPage();
await page.setDefaultNavigationTimeout(60000); //timeout 60 seconds now
傳遞 0 以禁用超時
await page.setDefaultNavigationTimeout(0);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.