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
プロパティ値: ログファイルへのパスを表す文字列
service.LogPath = GetLogLocation();
コンソール出力
ログ出力をコンソールに STDOUT として表示するように変更するには
ChromeDriverService service =
new ChromeDriverService.Builder().withLogOutput(System.out).build();
注: Java では、システムプロパティでコンソール出力を設定することもできます。
プロパティキー: ChromeDriverService.CHROME_DRIVER_LOG_PROPERTY
プロパティ値: DriverService.LOG_STDOUT
または DriverService.LOG_STDERR
ログレベル
利用可能なログレベルは 6 つあります: ALL
、DEBUG
、INFO
、WARNING
、SEVERE
、および OFF
。--verbose
は --log-level=ALL
と同等であり、--silent
は --log-level=OFF
と同等であることに注意してください。したがって、この例はログレベルを一般的に設定しているだけです。
ChromeDriverService service =
new ChromeDriverService.Builder().withLogLevel(ChromiumDriverLogLevel.DEBUG).build();
注: Java では、システムプロパティでログレベルを設定することもできます。
プロパティキー: ChromeDriverService.CHROME_DRIVER_LOG_LEVEL_PROPERTY
プロパティ値: ChromiumDriverLogLevel
列挙型の文字列表現
service = webdriver.ChromeService(service_args=['--log-level=DEBUG'], log_output=subprocess.STDOUT)
ログファイル機能
ファイルにログを記録する場合にのみ使用できる機能が 2 つあります。
- ログの追記
- 読みやすいタイムスタンプ
これらを使用するには、ログパスとログレベルも明示的に指定する必要があります。ログ出力はプロセスではなくドライバによって管理されるため、わずかな違いが見られる場合があります。
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)
ビルドチェックを無効にする
Chromedriver と Chrome ブラウザのバージョンは一致する必要があり、一致しない場合、ドライバはエラーになります。ビルドチェックを無効にすると、ドライバを任意のバージョンの Chrome で強制的に使用できます。これはサポートされていない機能であり、バグは調査されないことに注意してください。
ChromeDriverService service =
new ChromeDriverService.Builder().withBuildCheckDisabled(true).build();
注: Java では、システムプロパティでビルドチェックを無効にすることもできます。
プロパティキー: ChromeDriverService.CHROME_DRIVER_DISABLE_BUILD_CHECK
プロパティ値: "true"
または "false"
service = webdriver.ChromeService(service_args=['--disable-build-check'], log_output=subprocess.STDOUT)
service.DisableBuildCheck = true;
特別な機能
一部のブラウザには、ブラウザ固有の追加機能が実装されています。
キャスト
タブの共有など、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 セクションを参照してください。