Node.js puppeteer - 如何设置导航超时?
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});
你可以这样设置超时
await page.goto('url'+tableCell04Val, {waitUntil: 'load', timeout: 10000}).then(() => {
console.log('success')
}).catch((res) => {
console.log('fails', res)
})
#更新 2019
自 V1.0.0 起,您还可以更改页面行为:
page.setDefaultNavigationTimeout(0);
参数是以毫秒为单位的超时。
https://pptr.dev/#?product=Puppeteer&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: 'networkidle2',timeout: 0});
networkidle2 comes handy for pages that do long-polling or any other side activity.
勾选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 方法或选项参数中的超时 属性。所有情况下的等待时间都以毫秒为单位指定。
await page.setDefaultNavigationTimeout(60000);
例如
const page = await browser.newPage();
await page.setDefaultNavigationTimeout(60000); //timeout 60 seconds now
传递 0 以禁用超时
await page.setDefaultNavigationTimeout(0);
我正在使用 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});
你可以这样设置超时
await page.goto('url'+tableCell04Val, {waitUntil: 'load', timeout: 10000}).then(() => {
console.log('success')
}).catch((res) => {
console.log('fails', res)
})
#更新 2019
自 V1.0.0 起,您还可以更改页面行为:
page.setDefaultNavigationTimeout(0);
参数是以毫秒为单位的超时。
https://pptr.dev/#?product=Puppeteer&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: 'networkidle2',timeout: 0});
networkidle2 comes handy for pages that do long-polling or any other side activity.
勾选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 方法或选项参数中的超时 属性。所有情况下的等待时间都以毫秒为单位指定。
await page.setDefaultNavigationTimeout(60000);
例如
const page = await browser.newPage();
await page.setDefaultNavigationTimeout(60000); //timeout 60 seconds now
传递 0 以禁用超时
await page.setDefaultNavigationTimeout(0);