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 ではすでにデフォルトの動作です。
options.detach = true
.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 クラスを使用すると、ログの出力先を指定できます。ログ出力は、ユーザーがどこかに指示しない限り無視されます。
ファイル出力
ログ出力を特定のファイルに保存するように変更するには
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 としてコンソールに表示するように変更するには
EdgeDriverService service = new EdgeDriverService.Builder().withLogOutput(System.out).build();
注: Java では、システムプロパティでコンソール出力を設定することもできます。
プロパティキー: EdgeDriverService.EDGE_DRIVER_LOG_PROPERTY
プロパティ値: DriverService.LOG_STDOUT
または DriverService.LOG_STDERR
ログレベル
利用可能なログレベルは 6 つあります: ALL
、DEBUG
、INFO
、WARNING
、SEVERE
、および OFF
。--verbose
は --log-level=ALL
と同等であり、--silent
は --log-level=OFF
と同等であることに注意してください。したがって、この例はログレベルを一般的に設定しているだけです。
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)
ログファイル機能
ファイルにログを記録する場合にのみ使用できる機能が 2 つあります
- ログの追加
- 可読なタイムスタンプ
これらを使用するには、ログパスとログレベルも明示的に指定する必要があります。ログ出力はプロセスではなくドライバによって管理されるため、わずかな違いが見られる場合があります。
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)
service.args << '--append-log'
service.args << '--readable-timestamp'
ビルドチェックの無効化
Edge ブラウザと msedgedriver のバージョンは一致する必要があり、一致しない場合、ドライバはエラーになります。ビルドチェックを無効にすると、任意のバージョンの Edge でドライバを強制的に使用できます。これはサポートされていない機能であり、バグは調査されないことに注意してください。
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;
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 セクションを参照してください。