Chrome DevTools プロトコルエンドポイント

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

これらのメソッドは、将来的に削除される予定です。 今後の互換性を確保するために、可能な場合は WebDriver-BiDi または WebDriver Bidi API メソッドを使用することをお勧めします。

使用方法

一般的に、このアプローチよりも CDP API を使用することをお勧めしますが、構文がよりクリーンまたは大幅に簡素化される場合があります。

制限事項は次のとおりです

  • 情報の取得または設定に限定されたユースケースでのみ機能します。 実際の非同期インタラクションには、別の実装が必要です
  • ドメインとキーの正しい「マジックストリング」を正確に知る必要があります
  • Chrome のアップデートにより、必要なパラメータが変更される可能性があります

代替実装は、CDP API Cookieの設定 にあります

    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);

CDP API Cookieの設定 実装の方が推奨されます

    cookie = {name: 'cheese',
              value: 'gouda',
              domain: 'www.selenium.dev',
              secure: true}

    driver.execute_cdp('Network.setCookie', **cookie)

パフォーマンスメトリクス

代替実装は、CDP API パフォーマンスメトリクス にあります

CDP API パフォーマンスメトリクス 実装の方が推奨されます

    ((HasCdp) driver).executeCdpCommand("Performance.enable", new HashMap<>());

    Map<String, Object> response =
        ((HasCdp) driver).executeCdpCommand("Performance.getMetrics", new HashMap<>());
    driver.execute_cdp_cmd('Performance.enable', {})

    metric_list = driver.execute_cdp_cmd('Performance.getMetrics', {})["metrics"]
            ((ChromeDriver)driver).ExecuteCdpCommand("Performance.enable", emptyDictionary);

            Dictionary<string, object> response = (Dictionary<string, object>)((ChromeDriver)driver)
                .ExecuteCdpCommand("Performance.getMetrics", emptyDictionary);

CDP API パフォーマンスメトリクス 実装の方が推奨されます

    driver.execute_cdp('Performance.enable')

    metric_list = driver.execute_cdp('Performance.getMetrics')['metrics']

ベーシック認証

代替実装は、CDP API ベーシック認証 および BiDi API ベーシック認証 にあります

BiDi API ベーシック認証 実装の方が推奨されます

    ((HasCdp) driver).executeCdpCommand("Network.enable", new HashMap<>());

    String encodedAuth = Base64.getEncoder().encodeToString("admin:admin".getBytes());
    Map<String, Object> headers =
        ImmutableMap.of("headers", ImmutableMap.of("authorization", "Basic " + encodedAuth));

    ((HasCdp) driver).executeCdpCommand("Network.setExtraHTTPHeaders", headers);
    driver.execute_cdp_cmd("Network.enable", {})

    credentials = base64.b64encode("admin:admin".encode()).decode()
    headers = {'headers': {'authorization': 'Basic ' + credentials}}

    driver.execute_cdp_cmd('Network.setExtraHTTPHeaders', headers)
            ((ChromeDriver)driver).ExecuteCdpCommand("Network.enable", emptyDictionary);
            
            string encodedAuth = Convert.ToBase64String(Encoding.Default.GetBytes("admin:admin"));
            var headers = new Dictionary<string, object>
            {
                { "headers", new Dictionary<string, string> { { "authorization", "Basic " + encodedAuth } } }
            };

            ((ChromeDriver)driver).ExecuteCdpCommand("Network.setExtraHTTPHeaders", headers);

BiDi API ベーシック認証 実装の方が推奨されます

    driver.execute_cdp('Network.enable')

    credentials = Base64.strict_encode64('admin:admin')
    headers = {authorization: "Basic #{credentials}"}

    driver.execute_cdp('Network.setExtraHTTPHeaders', headers: headers)