web-dev-qa-db-ja.com

Node.js人形-ナビゲーションタイムアウトを設定する方法

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'});
26
Philipp M

重いページをロードしている場合は、timeout: 0を使用してタイムアウトエラーを無効にすることができます。

page.gotoのように使用してください:

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

変更を追加したPupeteerへのPRと、ドキュメントとそれを実装する単体テストが表示されます。

39
Jay Gould

アップデート2019

V1.0.0以降、ページの動作を変更することもできます。

await page.setDefaultNavigationTimeout(0); 

Paramはミリ秒単位のタイムアウトです。

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

15
Juanmabs22

Puppeteerでタイムアウトを処理するには、2つの方法があります。

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_よりも優先されます

5
Juanma Menendez

このようにタイムアウトを設定できます

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は、ロングポーリングやその他のサイドアクティビティを行うページに便利です。

チェック https://github.com/puppeteer/puppeteer/issues/1552#issuecomment-350954419

0
Rexben