Chrome開発ツール

多くのブラウザは、「開発ツール」を提供しています。これは、開発者がWebアプリのデバッグやページのパフォーマンス調査に使用できる、ブラウザに統合されたツールセットです。Google Chromeの開発ツールは、Chrome DevTools Protocol(略して「CDP」)と呼ばれるプロトコルを使用します。名前が示すように、これはテスト用ではなく、安定したAPIを持つように設計されていないため、機能はブラウザのバージョンに大きく依存します。

WebDriver BiDirectional Protocol は、W3C WebDriverプロトコルの次世代であり、すべてのブラウザで実装される安定したAPIを提供することを目指していますが、まだ完成していません。完成するまでは、SeleniumはCDPを実装しているブラウザ(Google Chrome、Microsoft Edge、Firefoxなど)にアクセスできるようにすることで、テストを興味深い方法で拡張できるようにします。できることの例を以下に示します。

SeleniumでChrome開発ツールを使用する方法

SeleniumでChrome開発ツールにアクセスするには、3つの異なる方法があります。オンラインで他の例を探すと、これらが混在しているのを見かけるでしょう。

  • CDPエンドポイント は、ユーザーが最初に利用できたオプションでした。これは、最も単純なこと(状態の設定、基本情報の取得)にのみ機能し、ドメインとメソッド、キーと値のペアの「マジック文字列」を知る必要があります。基本的な要件の場合、これは他のオプションよりも簡単かもしれません。これらのメソッドは一時的にのみサポートされています。
  • CDP API は、エンドポイントを使用するだけの改善点であり、非同期に処理を実行できます。文字列とマップの代わりに、コードでサポートされているクラス、メソッド、パラメータにアクセスできます。これらのメソッドも一時的にのみサポートされています。
  • BiDi API オプションは、実装の詳細を完全に抽象化し、SeleniumがCDPから移行する際にCDPまたはWebDriver-BiDiのいずれかで機能するため、可能な限り使用する必要があります。

価値の限られた例

CDPを使用する際の一般的な例として、実用的な価値が限られているものがいくつかあります。

  • ジオロケーション — ほとんどすべてのサイトはIPアドレスを使用して物理的な場所を特定するため、エミュレートされたジオロケーションを設定しても、期待どおりの効果が得られないことがよくあります。
  • デバイスメトリクスのオーバーライド — Chromeは、オプションクラスでモバイルエミュレーションを設定するための優れたAPIを提供しており、これは一般的にCDPでこれを実行しようとするよりも優れています。

これらのドキュメントの例で、追加の便利な処理を行う方法を確認してください


Chrome DevTools Protocolエンドポイント

Googleは、直接アクセスできる `/cdp/execute` エンドポイントを提供しています。各Seleniumバインディングは、CDPドメインを文字列として、必要なパラメータを単純なマップとして渡すことができるメソッドを提供します。

Chrome DevTools Protocol API

各Seleniumバインディングは、さまざまなCDPドメインと機能のクラスとメソッドを動的に生成します。これらはChromeの特定のバージョンに関連付けられています。

BiDi APIを使用したChrome Devtools Protocol

これらの例は現在CDPで実装されていますが、機能がWebDriver-BiDiで再実装された場合でも同じコードが機能するはずです。

最終更新日:2023年10月18日: BiDiドキュメントの刷新 (#1489) (70802b62157)