Edge固有の機能

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

Microsoft Edge は Chromium をベースに実装されており、サポートされている最も古いバージョンは v79 です。Chrome と同様に、edgedriver のメジャーバージョン番号は Edge ブラウザのメジャーバージョンと一致する必要があります。

オプション

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

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

基本的な定義済みオプションで Edge セッションを開始する例は次のとおりです。

    EdgeOptions options = new EdgeOptions();
    driver = new EdgeDriver(options);
    options = webdriver.EdgeOptions()
    driver = webdriver.Edge(options=options)
            var options = new EdgeOptions();
            driver = new EdgeDriver(options);
      options = Selenium::WebDriver::Options.edge
      @driver = Selenium::WebDriver.for :edge, options: options
    let options = new edge.Options();
    driver = new Builder()
      .forBrowser(Browser.EDGE)
      .setEdgeOptions(options)
      .build();

引数

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

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

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

    options.addArguments("--start-maximized");
    options.add_argument("--start-maximized")
            options.AddArgument("--start-maximized");
      options.args << '--start-maximized'
      .setEdgeOptions(options.addArguments('--headless=new'))

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

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

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

    options.setBinary(getEdgeLocation());
    options.binary_location = edge_bin
            options.BinaryLocation = GetEdgeLocation();
      options.binary = edge_location

拡張機能を追加する

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

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

    options.addExtensions(extensionFilePath);
    options.add_extension(extension_file_path)
            options.AddExtension(extensionFilePath);
      options.add_extension(extension_file_path)
      .setEdgeOptions(options.addExtensions(['./test/resources/extensions/webextensions-selenium-example.crx']))

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

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

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

    options.add_experimental_option("detach", True)

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

      .setEdgeOptions(options.detachDriver(true))

引数の除外

MSEdgedriver には、ブラウザを起動するために使用するいくつかのデフォルト引数があります。これらの引数を追加したくない場合は、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'
      .setEdgeOptions(options.excludeSwitches('enable-automation'))

サービス

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

ログ出力

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

ファイル出力

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

Selenium v4.10

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

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

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

コンソール出力

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

Selenium v4.10

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

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

Selenium v4.11

    service = webdriver.EdgeService(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

    EdgeDriverService service =
        new EdgeDriverService.Builder().withLoglevel(ChromiumDriverLogLevel.DEBUG).build();

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

    service = webdriver.EdgeService(service_args=['--log-level=DEBUG'], log_output=log_path)

Selenium v4.10

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

ログファイル機能

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

  • ログの追加
  • 可読なタイムスタンプ

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

Selenium v4.8

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

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

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

Selenium v4.8

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

ビルドチェックの無効化

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

Selenium v4.8

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

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

    service = webdriver.EdgeService(service_args=['--disable-build-check'], log_output=log_path)
            service.DisableBuildCheck = true;

Selenium v4.8

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

Internet Explorer モード

Microsoft Edge は、「Internet Explorer 互換モード」で駆動できます。これは、Microsoft Edge と組み合わせて Internet Explorer Driver クラスを使用します。詳細については、Internet Explorer ページを参照してください。

特別な機能

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

キャスト

Edge を使用して 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

ネットワーク環境

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


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

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