Puppeteer をデバッグする

ヘッドレス モードをオフにする

ブラウザの表示内容を確認すると便利な場合があります。ヘッドレス モードで起動するのではなく、headless: false を使用してブラウザのフルバージョンを起動します。

const browser = await puppeteer.launch({ headless: false });

スローダウン

slowMo オプションは、Puppeteer オペレーションを指定されたミリ秒数だけ遅くします。状況を確認するもう 1 つの方法です。

const browser = await puppeteer.launch({
  headless: false,
  slowMo: 250, // slow down by 250ms
});

コンソール出力のキャプチャ

console イベントをリッスンできます。これは、page.evaluate() のコードをデバッグする場合にも便利です。

page.on('console', (msg) => console.log('PAGE LOG:', msg.text()));

await page.evaluate(() => console.log(`url is ${location.href}`));

アプリケーション コード ブラウザでデバッガを使用する

実行コンテキストは 2 つあります。テストコードを実行する Node.js と、テスト対象のアプリケーション コードを実行するブラウザです。これにより、アプリケーション コード ブラウザでコード(evaluate() 内のコード)をデバッグできます。

Puppeteer の起動時に {devtools: true} を使用する

const browser = await puppeteer.launch({ devtools: true });

デフォルトのテスト タイムアウトを変更する

  • jest: jest.setTimeout(100000);
  • jasmine: jasmine.DEFAULT_TIMEOUT_INTERVAL = 100000;
  • mocha: this.timeout(100000);「=>」ではなく「関数」を使用するようにテストを変更することを忘れないでください)

内部にデバッガを含む評価ステートメントを追加するか、既存の評価ステートメントにデバッガを追加します。

await page.evaluate(() => {
  debugger;
});

その後、上記の評価ステートメントでテストの実行が停止し、Chromium はデバッグモードで停止します。

Node.js でデバッガを使用する

これにより、テストコードをデバッグできます。たとえば、node.js スクリプトで await page.click() をステップすると、アプリケーション コード ブラウザでクリックを確認できます。

Chromium のバグ 833928 のため、DevTools コンソールで await page.click() を実行できません。そのため、試してみたい場合は、そのテストファイルに追加する必要があります。

  1. テストにデバッガを追加します。例: javascript debugger; await page.click('a[target=_blank]');
  2. ヘッドレスを false に設定します。
  3. ノード --inspect-brk を実行します(例: node --inspect-brk node_modules/.bin/jest tests)。
  4. Chrome で chrome://inspect/#devices を開き、inspect をクリックします。
  5. 新しく開いたテストブラウザで、「F8」と入力してテスト実行を再開します。
  6. デバッガにヒットし、テストブラウザでデバッグできるようになりました

詳細ログを有効にする

内部 DevTools プロトコル トラフィックは、Puppeteer 名前空間のデバッグ モジュールでログに記録されます。

# Basic verbose logging
env DEBUG="puppeteer:*" node script.js

# Protocol traffic can be rather noisy. This example filters out all Network
# domain messages
env DEBUG="puppeteer:*" env DEBUG_COLORS=true node script.js 2>&1 | grep -v '"Network'

Puppeteer(ノード)コードをデバッグする

ndb を使用します。

  • npm install -g ndb(または npx を使用します)。
  • Puppeteer(ノード)コードにデバッガを追加します。
  • テストコマンドの前に ndb(または npx ndb)を追加します。例: ndb jestndb mocha(または npx ndb jest / npx ndb mocha)。
  • Chromium 内のテストを手軽にデバッグできます。