Chrome固有の機能

これらは、Google Chrome ブラウザに固有の機能と特徴です。

デフォルトでは、Selenium 4 は Chrome v75 以降と互換性があります。Chrome ブラウザのバージョンと chromedriver のバージョンは、メジャーバージョンが一致する必要があることに注意してください。

オプション

すべてのブラウザに共通の機能は、オプションのページで説明されています。

Chrome および Chromium 固有の機能は、Google のCapabilities & ChromeOptionsのページに記載されています。

基本的な定義済みオプションで Chrome セッションを開始すると、次のようになります。

    ChromeOptions options = new ChromeOptions();
    driver = new ChromeDriver(options);
    options = webdriver.ChromeOptions()
    driver = webdriver.Chrome(options=options)
            var options = new ChromeOptions();
            driver = new ChromeDriver(options);
      options = Selenium::WebDriver::Options.chrome
      @driver = Selenium::WebDriver.for :chrome, options: options
    const Options = new Chrome.Options();
    let driver = new Builder()
      .forBrowser(Browser.CHROME)
      .setChromeOptions(Options)
      .build();

引数

args パラメータは、ブラウザの起動時に使用されるコマンドラインスイッチのリスト用です。これらの引数を調べるための優れたリソースが 2 つあります。

一般的に使用される args には、--start-maximized--headless=new、および --user-data-dir=... があります。

オプションに引数を追加する

    options.addArguments("--start-maximized");
    options.add_argument("--start-maximized")
            options.AddArgument("--start-maximized");
      options.args << '--start-maximized'
    let driver = new Builder()
      .forBrowser(Browser.CHROME)
      .setChromeOptions(options.addArguments('--headless=new'))
      .build();

指定された場所でブラウザを起動する

binary パラメータは、使用するブラウザの代替ロケーションのパスを取ります。このパラメータを使用すると、chromedriver を使用してさまざまな Chromium ベースのブラウザを駆動できます。

オプションにブラウザの場所を追加する

    options.setBinary(getChromeLocation());
    options.binary_location = chrome_bin
            options.BinaryLocation = GetChromeLocation();
      options.binary = chrome_location
    let driver = new Builder()
      .forBrowser(Browser.CHROME)
      .setChromeOptions(options.setChromeBinaryPath(`Path to chrome binary`))
      .build();

拡張機能を追加する

extensions パラメータは crx ファイルを受け入れます。解凍されたディレクトリについては、こちらの投稿で言及されているように、代わりに load-extension 引数を使用してください。

オプションに拡張機能を追加する

    options.addExtensions(extensionFilePath);
    options.add_extension(extension_file_path)
            options.AddExtension(extensionFilePath);
      options.add_extension(extension_file_path)
    const options = new Chrome.Options();
    let driver = new Builder()
      .forBrowser(Browser.CHROME)
      .setChromeOptions(options.addExtensions(['./test/resources/extensions/webextensions-selenium-example.crx']))
      .build();

ブラウザを開いたままにする

detach パラメータを true に設定すると、quit コマンドがドライバに送信されない限り、プロセスが終了した後もブラウザが開いたままになります。

: これは Java ではすでにデフォルトの動作です。

    options.add_experimental_option("detach", True)

: これは .NET ではすでにデフォルトの動作です。

      options.detach = true
    let driver = new Builder()
      .forBrowser(Browser.CHROME)
      .setChromeOptions(options.detachDriver(true))
      .build();

引数を除外する

Chromedriver には、ブラウザを起動するために使用するデフォルトの引数がいくつかあります。これらの引数を追加したくない場合は、それらを excludeSwitches に渡します。一般的な例としては、ポップアップブロッカーを再度オンにすることがあります。デフォルトの引数の完全なリストは、Chromium ソースコードから解析できます。

オプションで除外する引数を設定する

    options.setExperimentalOption("excludeSwitches", List.of("disable-popup-blocking"));
    options.add_experimental_option('excludeSwitches', ['disable-popup-blocking'])
            options.AddExcludedArgument("disable-popup-blocking");
      options.exclude_switches << 'disable-popup-blocking'
    let driver = new Builder()
      .forBrowser(Browser.CHROME)
      .setChromeOptions(options.excludeSwitches('enable-automation'))
      .build();

サービス

デフォルトの Service オブジェクトの作成例、およびドライバの場所とポートの設定例は、ドライバサービスのページにあります。

ログ出力

ドライバログを取得することは、問題をデバッグするのに役立ちます。Service クラスを使用すると、ログの出力先を指定できます。ログ出力は、ユーザーが出力先を指定しない限り無視されます。

ファイル出力

ログ出力を特定のファイルに保存するように変更するには

    ChromeDriverService service =
        new ChromeDriverService.Builder().withLogFile(logLocation).build();

: Java では、システムプロパティでファイル出力を設定することもできます。
プロパティキー: ChromeDriverService.CHROME_DRIVER_LOG_PROPERTY
プロパティ値: ログファイルへのパスを表す文字列

Selenium v4.11

    service = webdriver.ChromeService(log_output=log_path)
            service.LogPath = GetLogLocation();

コンソール出力

ログ出力をコンソールに STDOUT として表示するように変更するには

Selenium v4.10

    ChromeDriverService service =
        new ChromeDriverService.Builder().withLogOutput(System.out).build();

: Java では、システムプロパティでコンソール出力を設定することもできます。
プロパティキー: ChromeDriverService.CHROME_DRIVER_LOG_PROPERTY
プロパティ値: DriverService.LOG_STDOUT または DriverService.LOG_STDERR

Selenium v4.11

    service = webdriver.ChromeService(log_output=subprocess.STDOUT)

$stdout$stderr はどちらも有効な値です

Selenium v4.10

      service.log = $stdout

ログレベル

利用可能なログレベルは 6 つあります: ALLDEBUGINFOWARNINGSEVERE、および OFF--verbose--log-level=ALL と同等であり、--silent--log-level=OFF と同等であることに注意してください。したがって、この例はログレベルを一般的に設定しているだけです。

Selenium v4.8

    ChromeDriverService service =
        new ChromeDriverService.Builder().withLogLevel(ChromiumDriverLogLevel.DEBUG).build();

: Java では、システムプロパティでログレベルを設定することもできます。
プロパティキー: ChromeDriverService.CHROME_DRIVER_LOG_LEVEL_PROPERTY
プロパティ値: ChromiumDriverLogLevel 列挙型の文字列表現

Selenium v4.11

    service = webdriver.ChromeService(service_args=['--log-level=DEBUG'], log_output=subprocess.STDOUT)

Selenium v4.10

      service.args << '--log-level=DEBUG'

ログファイル機能

ファイルにログを記録する場合にのみ使用できる機能が 2 つあります。

  • ログの追記
  • 読みやすいタイムスタンプ

これらを使用するには、ログパスとログレベルも明示的に指定する必要があります。ログ出力はプロセスではなくドライバによって管理されるため、わずかな違いが見られる場合があります。

Selenium v4.8

    ChromeDriverService service =
        new ChromeDriverService.Builder().withAppendLog(true).withReadableTimestamp(true).build();

: Java では、システムプロパティでこれらの機能を切り替えることもできます。
プロパティキー: ChromeDriverService.CHROME_DRIVER_APPEND_LOG_PROPERTY および ChromeDriverService.CHROME_DRIVER_READABLE_TIMESTAMP
プロパティ値: "true" または "false"

    service = webdriver.ChromeService(service_args=['--append-log', '--readable-timestamp'], log_output=log_path)

Selenium v4.8

      service.args << '--append-log'
      service.args << '--readable-timestamp'

ビルドチェックを無効にする

Chromedriver と Chrome ブラウザのバージョンは一致する必要があり、一致しない場合、ドライバはエラーになります。ビルドチェックを無効にすると、ドライバを任意のバージョンの Chrome で強制的に使用できます。これはサポートされていない機能であり、バグは調査されないことに注意してください。

Selenium v4.8

    ChromeDriverService service =
        new ChromeDriverService.Builder().withBuildCheckDisabled(true).build();

: Java では、システムプロパティでビルドチェックを無効にすることもできます。
プロパティキー: ChromeDriverService.CHROME_DRIVER_DISABLE_BUILD_CHECK
プロパティ値: "true" または "false"

Selenium v4.11

    service = webdriver.ChromeService(service_args=['--disable-build-check'], log_output=subprocess.STDOUT)
            service.DisableBuildCheck = true;

Selenium v4.8

      service.args << '--disable-build-check'

特別な機能

一部のブラウザには、ブラウザ固有の追加機能が実装されています。

キャスト

タブの共有など、Chrome Cast デバイスを駆動できます。

    List<Map<String, String>> sinks = driver.getCastSinks();
    if (!sinks.isEmpty()) {
      String sinkName = sinks.get(0).get("name");
      driver.startTabMirroring(sinkName);
      driver.stopCasting(sinkName);
    }
        sinks = driver.get_sinks()
        if sinks:
            sink_name = sinks[0]['name']
            driver.start_tab_mirroring(sink_name)
            driver.stop_casting(sink_name)
      sinks = @driver.cast_sinks
      unless sinks.empty?
        device_name = sinks.first['name']
        @driver.start_cast_tab_mirroring(device_name)
        expect { @driver.stop_casting(device_name) }.not_to raise_exception
      end

ネットワーク条件

さまざまなネットワーク条件をシミュレートできます。

    ChromiumNetworkConditions networkConditions = new ChromiumNetworkConditions();
    networkConditions.setOffline(false);
    networkConditions.setLatency(java.time.Duration.ofMillis(20)); // 20 ms of latency
    networkConditions.setDownloadThroughput(2000 * 1024 / 8); // 2000 kbps
    networkConditions.setUploadThroughput(2000 * 1024 / 8);   // 2000 kbps

    ((ChromeDriver) driver).setNetworkConditions(networkConditions);
    network_conditions = {
        "offline": False,
        "latency": 20,  # 20 ms of latency
        "download_throughput": 2000 * 1024 / 8,  # 2000 kbps
        "upload_throughput": 2000 * 1024 / 8,    # 2000 kbps
    }
    driver.set_network_conditions(**network_conditions)
      @driver.network_conditions = {offline: false, latency: 100, throughput: 200}

ログ

    LogEntries logs = driver.manage().logs().get(LogType.BROWSER);
    logs = driver.get_log("browser")
      logs = @driver.logs.get(:browser)

権限

    driver.setPermission("camera", "denied");
    driver.set_permissions('camera', 'denied')
      @driver.add_permission('camera', 'denied')
      @driver.add_permissions('clipboard-read' => 'denied', 'clipboard-write' => 'prompt')

DevTools

Chrome DevTools の使用に関する詳細については、Chrome DevTools セクションを参照してください。