メインコンテンツへスキップ
ブログサイトのロゴsui Tech Blog
1分で読めます

Playwrightでクエリパラメータが付与されているページのURLを取得する

Playwrightでクエリパラメータが付与されているページのURLを取得する方法を解説します。page.on()メソッドでネットワークを監視する方法を紹介します。

結論

page.on() メソッドでネットワークを監視して、特定の URL だけを取得すれば可能です。

    // 現在のURLを取得する
  page.on('response', async (response) => {
    // レスポンスURLを取得する
    const responseURL = response.url();
    console.log('🚀 ~ page.on ~ response:', response);
  });

確認方法

response.url の内容は Chrome DevTools のリクエスト URL を見れば確認できます。

Chrome DevToolsネットワークタブでHTTPリクエスト一覧が表示されている画面
Chrome DevTools ネットワークタブの内容

Chrome DevToolsでリクエストURLの位置を示している画面
リクエストURLの位置

使用例としてはこんな感じで、特定のページ URL(この場合 inori-track.vercel.app/venue)の通信だけをフィルタリングし、そこに紐づくクエリパラメータを searchParams.getAll('hoge'); で取得します。

  // 現在のURLを取得する
  page.on('response', async (response) => {
    // レスポンスURLを取得する
    const responseURL = response.url();
 
    // レスポンスURLがinori-track.vercel.app/venueのものだけを抽出する。
    if (responseURL.match(/inori-track.vercel.app\/venue/g)) {
      const url = new URL(responseURL);
      // クエリパラメータを取得する
      const params = url.searchParams.getAll('live_id');
 
      // 以下固有の処理なので気にしなくてもOK
      // IDに紐づく会場名を取得する
      const venueList = liveNames.filter((live) => params.includes(live.id));
 
      // 会場名が画面に表示されていることを確認
      for (const venue of venueList) {
        await expect(page.getByLabel(venue.name)).toBeVisible();
      }
    }
  });

参考

zenn.dev のアイコン
zenn.dev

Playwrightで特定の通信だけを抽出したい【Flutter on Webと闘う】

関連記事

Playwright

やはり俺のPlaywrightはまちがっている。

過去のプロジェクトから流用したPlaywrightのコードは「動いて」いました。しかし、偶然ドキュメントを読み直したとき、「動く」と「正しく動く」の間には設計思想の違いがあることに気づきました。page.evaluate()ではなくlocatorを使うべき理由、waitForNavigation()が非推奨である理由。公式ドキュメントには、単なるAPIリファレンスではなく「なぜこの方法が推奨されるのか」が書かれています。時間がない現実の中で、それでもドキュメントを読む価値とは何かを考えます。

記事を読む
Playwrightagent-browserAI

Playwright CLI と agent-browser のどちらがトークン消費量が少ないか比較検証してみた

Playwright CLIとagent-browserで同一操作を行い、トークン消費量を比較しました。スナップショットをファイル出力してGrep検索する設計思想により、Playwright CLIはagent-browserより約40%のトークン削減を達成しています。本記事ではAIブラウザ操作ツールの設計思想の違いがコストに与える影響を検証します。

記事を読む
agent-browserPlaywrightAI

AIエージェント向けに最適化されてたagent-browserをPlaywright MCPと比較検証してみた

agent-browserの「Up to 93% less context than Playwright MCP」は本当か気になったので、Yahoo! JAPANを対象にPlaywright MCPと比較してデータ削減率とトークン消費量を検証します。

記事を読む