双方向機能

双方向とは、通信が双方向に同時に行われることを意味します。従来の WebDriver モデルは、厳密なリクエスト/レスポンスコマンドを使用しており、一度に一方向への通信しか許可されていませんでした。ほとんどの場合、これは望ましい動作です。ブラウザが期待どおりの順序で動作することを保証しますが、非同期インタラクションで実行できる興味深いことが数多くあります。

この機能は現在、[Chrome DevTools Protocol] (CDP) を使用して限定的に利用可能ですが、その欠点に対処するために、Selenium チームは主要なブラウザベンダーと協力して、新しい WebDriver BiDi Protocol を作成しました。この仕様は、WebSocket を介してユーザーエージェントから制御ソフトウェアへのイベントのストリーミングなど、拡張されたブラウザ自動化およびテスト機能のために双方向通信を活用する、安定したクロスブラウザ API を作成することを目的としています。ユーザーは、Selenium セッション中に発生するイベントをリッスン、記録、または操作できるようになります。

Selenium で BiDi を有効にする

WebDriver BiDi を使用するには、ブラウザオプションで capability を設定すると、必要な機能が有効になります。

options.setCapability("webSocketUrl", true);
options.enable_bidi = True
UseWebSocketUrl = true,
options.web_socket_url = true
Options().enableBidi();
options.setCapability("webSocketUrl", true);

これにより、双方向通信用の WebSocket 接続が有効になり、WebDriver BiDi プロトコルの潜在能力を最大限に引き出すことができます。

Selenium は WebDriver Classic から WebDriver BiDi に実装全体を更新していますが (可能な限り後方互換性を維持しながら)、このドキュメントのセクションでは、双方向通信によって可能になる新しい機能に焦点を当てています。低レベルの BiDi ドメインはエンドユーザーがコードでアクセスできますが、目標は、実際のユースケースの簡単な方法である高レベルの API を提供することです。そのため、低レベルのコンポーネントはドキュメント化されず、このセクションでは、ユーザーが活用することを推奨するユーザーフレンドリーな機能のみに焦点を当てます。

追加してほしい機能がある場合は、機能リクエストを提出してください。


WebDriver BiDi ロギング機能

これらの機能はロギングに関連しています。「ロギング」は非常に多くの異なるものを指す可能性があるため、これらのメソッドは「script」名前空間を介して利用できます。

WebDriver BiDi ネットワーク機能

これらの機能はネットワークに関連しており、「network」名前空間を介して利用できます。

WebDriver BiDi スクリプト機能

これらの機能はスクリプトに関連しており、「script」名前空間を介して利用できます。

Chrome DevTools Protocol

Selenium での Chrome DevTools Protocol の使用例。 CDP サポートは、WebDriver BiDi が実装されるまでの間、一時的なものです。

双方向 API (W3C 準拠)

Selenium での Chrome DevTools Protocol の使用例。 CDP サポートは、WebDriver BiDi が実装されるまでの間、一時的なものです。