Chrome DevTools のログ機能
CDP を使用したログ機能。
多くのブラウザは「DevTools」を提供しています。これは、開発者がウェブアプリをデバッグしたり、ページのパフォーマンスを調査したりするために使用できる、ブラウザに統合されたツールセットです。Google Chrome の DevTools は、Chrome DevTools Protocol (略して「CDP」) と呼ばれるプロトコルを使用しています。名前が示すように、これはテスト用に設計されたものではなく、安定した API を持つものでもありません。そのため、機能はブラウザのバージョンに大きく依存します。
Selenium は、[WebDriver BiDi] と呼ばれる、標準ベースのクロスブラウザで安定した CDP の代替の実装に取り組んでいます。この新しいプロトコルのサポートが完了するまで、Selenium は適用可能な場合に CDP 機能へのアクセスを提供する予定です。
Chrome と Edge には、基本的な CDP コマンドを送信する方法があります。これは、双方向通信を必要とする機能では動作しません。また、いつどのドメインを有効にするか、およびドメイン/メソッド/パラメータの正確な名前とタイプを知る必要があります。
Map<String, Object> cookie = new HashMap<>();
cookie.put("name", "cheese");
cookie.put("value", "gouda");
cookie.put("domain", "www.selenium.dev");
cookie.put("secure", true);
((HasCdp) driver).executeCdpCommand("Network.setCookie", cookie);
cookie = {'name': 'cheese',
'value': 'gouda',
'domain': 'www.selenium.dev',
'secure': True}
driver.execute_cdp_cmd('Network.setCookie', cookie)
var cookie = new Dictionary<string, object>
{
{ "name", "cheese" },
{ "value", "gouda" },
{ "domain", "www.selenium.dev" },
{ "secure", true }
};
((ChromeDriver)driver).ExecuteCdpCommand("Network.setCookie", cookie);
driver.execute_cdp('Network.setCookie',
name: 'cheese',
value: 'gouda',
domain: 'www.selenium.dev',
secure: true)
CDP の操作を容易にし、より高度な機能へのアクセスを提供するために、Selenium バインディングは、最も一般的なドメインのクラスとメソッドを自動的に生成します。ただし、CDP のメソッドと実装はバージョンごとに変更される可能性があるため、Chrome のバージョンと DevTools のバージョンを一致させる必要があります。Selenium は、常に Chrome の最新 3 バージョンをサポートしており、最新バージョンへのアクセスが利用可能になるようにリリース時期を調整しようとしています。
この制限により、いくつかのバインディングでは追加の課題が生じます。動的に生成される CDP サポートでは、ユーザーは適切なバージョンの CDP を参照するために、定期的にコードを更新する必要があります。場合によっては、ユーザーがコードを変更しなくても、どのバージョンの CDP でも動作するように理想化された実装が作成されていますが、常に利用できるとは限りません。
Selenium テストで CDP を使用する方法の例は、以下のページにあります。ただし、実際的な価値が限られている、一般的に引用される例をいくつか指摘しておきたいと思います。
CDP を使用したログ機能。
CDP を使用したネットワーク機能。
CDP を使用したスクリプト機能。
詳細はこちらをご覧いただくか、スポンサーの全リストをご覧ください。