ブラウザコンソールにエラーがある人形遣いのページを取得していますが、人形のコンソールイベントがすべてのコンソールメッセージによってトリガーされていません。
パペットクロムブラウザーに複数のコンソールメッセージが表示される
ただし、puppeteerコンソールはノードに1つのことだけを記録します
現在使用しているスクリプトは次のとおりです。
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
page.on('console', msg => console.log('PAGE LOG:', msg.text));
await page.goto('https://pagewithsomeconsoleerrors.com');
await browser.close();
})();
編集:以下の私のコメントで述べたように、エベレットが推奨したpage.waitFor(5000)コマンドを試してみましたが、うまくいきませんでした。
Edit2:msg.text
からスプレッド演算子が削除されました。
Edit3:似ているが異なるスクリーンショットの例でこれに関してgithubで問題を開きました: https://github.com/GoogleChrome/puppeteer/issues/1512
すべてをキャッチしたい場合は、複数のリスナーを設定する必要があります。 console
イベントは、ページ内のJavaScriptがコンソールAPIメッセージ(_console.log
_など)を呼び出すと発生します。
コンソールAPIの完全なリストについては、MDNのコンソールのドキュメントをご覧ください。 https://developer.mozilla.org/en-US/docs/Web/API/Console
複数のリスナーが必要な理由は、投稿した画像に記録されているものの一部がpage内で発生しないためです。
したがって、たとえば、イメージの最初のエラーをキャッチするには、_net:: ERR_CONNECTION_REFUSED
_リスナーを次のように設定します。page.on('requestfailed', err => console.log(err));
Puppeteerのドキュメントには、イベントの完全なリストが含まれています。使用しているバージョンのドキュメントを参照し、Pageクラスが発行するさまざまなイベントと、それらのイベントが返すものを確認する必要があります。上で書いた例は、Puppeteerのリクエストクラスのインスタンスを返します。
https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#class-page