機能と ChromeOptions

機能は、ChromeDriver セッションのカスタマイズと構成に使用できるオプションです。このページでは、ChromeDriver でサポートされているすべての機能とその使用方法について説明します。

WebDriver 言語 API には、ChromeDriver に機能を渡す方法が用意されています。具体的なメカニズムは言語によって異なりますが、ほとんどの言語では次のいずれか、または両方のメカニズムを使用しています。

  1. ChromeOptions クラスを使用します。これは Java、Python などでサポートされています。
  2. DesiredCapabilities クラスを使用します。これは Python、Ruby などでサポートされています。Java でも使用できますが、Java での使用は非推奨です。

ChromeOptions クラスの使用

ChromeOptions のインスタンスを作成できます。このインスタンスには、ChromeDriver 固有の機能を設定するための便利なメソッドがあります。次に、ChromeOptions オブジェクトを ChromeDriver コンストラクタに渡します。

ChromeOptions options = new ChromeOptions();
options.addExtensions(new File("/path/to/extension.crx"));
ChromeDriver driver = new ChromeDriver(options);

Selenium バージョン 3.6.0 以降では、Java の ChromeOptions クラスも Capabilities インターフェースを実装しているため、ChromeDriver に固有ではない他の WebDriver 機能を指定できます。

ChromeOptions options = new ChromeOptions();

// Add the WebDriver proxy capability.
Proxy proxy = new Proxy();
proxy.setHttpProxy("myhttpproxy:3337");
options.setCapability("proxy", proxy);

// Add a ChromeDriver-specific capability.
options.addExtensions(new File("/path/to/extension.crx"));
ChromeDriver driver = new ChromeDriver(options);

DesiredCapabilities を使用する

DesiredCapabilities を使用するには、機能の名前と、その機能が受け取る値の型を把握する必要があります。全リストをご覧ください。

Python

caps = webdriver.DesiredCapabilities.CHROME.copy()
caps['acceptInsecureCerts'] = True
driver = webdriver.Chrome(desired_capabilities=caps)

Ruby

caps = Selenium::WebDriver::Remote::Capabilities.chrome(
  "goog:chromeOptions" => {"args" => [ "window-size=1000,800" ]})
driver = Selenium::WebDriver.for :chrome, desired_capabilities: caps

一般的なユースケース

カスタム プロファイルを使用する

デフォルトでは、ChromeDriver はセッションごとに新しい一時プロファイルを作成します。特別な設定を設定するか、カスタム プロファイル(ユーザーデータ ディレクトリ)を使用することをおすすめします。

一時プロファイルを使用する場合は、chrome.prefs 機能を使用して、Chrome の起動後に適用する設定を指定できます。カスタム プロファイルの場合は、user-data-dir Chrome コマンドライン スイッチを使用して、使用するプロファイルを Chrome に指示できます。

ChromeOptions options = new ChromeOptions();
options.addArguments("user-data-dir=/path/to/your/custom/profile");

コマンドラインまたは ChromeDriver で Chrome を実行し、user-data-dir スイッチを新しいディレクトリに設定して、独自のカスタム プロファイルを作成します。

パスが存在しない場合、Chrome は指定した場所に新しいプロファイルを作成します。プロファイル設定を変更すると、ChromeDriver は今後そのプロファイルを使用できます。ブラウザで chrome://version を開き、Chrome が使用しているプロファイルを確認します。

Chrome を最大化して起動する

start-maximized スイッチを使用して Chrome を最大化して起動します。

ChromeOptions options = new ChromeOptions();
options.addArguments("start-maximized");

標準以外の場所で Chrome 実行可能ファイルを使用している

ChromeOptions options = new ChromeOptions();
options.setBinary("/path/to/other/chrome/binary");

ダイアログ ウィンドウをブロックする

デフォルトでは、ChromeDriver はポップアップ ウィンドウを許可するように Chrome を構成します。ポップアップをブロックし、ChromeDriver によって制御されていない場合に Chrome の通常の動作を復元するには、次の操作を行います。

ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("excludeSwitches",
     Arrays.asList("disable-popup-blocking"));

ダウンロード ディレクトリを設定する

次のコードを使用して、特定のディレクトリにファイルをダウンロードするように Chrome を構成できます。ただし、いくつか注意点があります。

  • Chrome では、特定のディレクトリの使用を禁止しています。特に、デスクトップ フォルダをダウンロード ディレクトリとして使用することはできません。Linux では、ダウンロードにホーム ディレクトリを使用できません。禁止されているディレクトリの正確なリストは変更される可能性があるため、システムにとって特別な意味のない一意のディレクトリを使用することをおすすめします。
  • ChromeDriver は、ダウンロードが完了するまで自動的に待機しません。driver.quit() を早すぎるタイミングで呼び出すと、ダウンロードが完了する前に Chrome が終了する可能性があります。
  • 相対パスは常に機能するとは限らないため、最適な結果を得るには完全なパスを使用してください。
  • Windows では、\` as path separators./` は信頼できません。
ChromeOptions options = new ChromeOptions();
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("download.default_directory", "/directory/path");
options.setExperimentalOption("prefs", prefs);

認識された機能

ChromeDriver で使用できる標準機能については、Selenium のドキュメントW3C WebDriver 標準をご覧ください。ここでは、Chrome 固有の機能について説明します。

ChromeOptions オブジェクト

Chrome 固有の機能のほとんどは、ChromeOptions オブジェクトを介して公開されます。一部の言語では、ChromeOptions クラスによって実装されます。他の言語では、選択した機能の goog:chromeOptions 辞書に保存されます。

名前 デフォルト 説明
args 文字列のリスト   Chrome の起動時に使用するコマンドライン引数のリスト。値が関連付けられている引数は、等号(=)で区切る必要があります(例: ['start-maximized', 'user-data-dir=/tmp/temp_profile'])。Chrome 引数のリストをご覧ください。
binary 文字列   使用する Chrome 実行可能ファイルのパス。
macOS X では、アプリだけでなく実際のバイナリ(/Applications/Google Chrome.app/Contents/MacOS/Google Chrome など)である必要があります。
extensions 文字列のリスト   起動時にインストールする Chrome 拡張機能のリスト。リスト内の各項目は、base64 でエンコードされた圧縮された Chrome 拡張機能(.crx)である必要があります。
localState dictionary   各エントリが設定の名前とその値で構成されるディクショナリ。これらの設定は、ユーザーデータ フォルダのローカル状態ファイルに適用されます。
prefs dictionary   各エントリが設定の名前とその値で構成されるディクショナリ。これらの設定は、使用しているユーザー プロファイルにのみ適用されます。例については、Chrome のユーザーデータ ディレクトリにある「Preferences」ファイルを参照してください。
detach ブール値 false false の場合、セッションが終了したかどうかにかかわらず、ChromeDriver が強制終了されると Chrome が終了します。
true の場合、Chrome はセッションが終了または閉じられた場合にのみ終了します。true でセッションが終了していない場合、ChromeDriver は実行中の Chrome インスタンスが使用している一時ユーザーデータ ディレクトリをクリーンアップできません。
debuggerAddress string
接続する Chrome デバッガ サーバーのアドレス(<ホスト名/IP: ポート> の形式。例: 127.0.0.1:38947)
excludeSwitches 文字列のリスト   Chrome の起動時に ChromeDriver がデフォルトで渡す Chrome コマンドライン スイッチのリスト。スイッチの前に -- を付けないでください。
minidumpPath string   Chrome ミニダンプが保存されるディレクトリ。(Linux でのみサポート)。
mobileEmulation dictionary   「deviceName」の値、または「deviceMetrics」と「userAgent」の値を含む辞書。詳しくは、モバイル エミュレーションをご覧ください。
perfLoggingPrefs dictionary   パフォーマンス ロギングの設定を指定するオプションの辞書。詳しくは以下をご確認ください。
windowTypes 文字列のリスト   ウィンドウ ハンドルのリストに表示されるウィンドウタイプのリスト。WebView 要素にアクセスするには、このリストに「webview」を含めます。
enableExtensionTargets ブール値 false Chrome 拡張機能のターゲットのイントロスペクションを有効にします。デフォルトでは、ChromeDriver に拡張機能のターゲットは含まれません(Chrome 136 以降)。

perfLoggingPrefs オブジェクト

perfLoggingPrefs ディクショナリの形式は次のとおりです。すべてのキーは省略可能です。

名前 タイプ デフォルト 説明
enableNetwork ブール値 true ネットワーク ドメインからイベントを収集するかどうか。
enablePage ブール値 true ページのドメインからイベントを収集するかどうか。
traceCategories 文字列 (空白) トレース イベントを収集する Chrome トレース カテゴリをカンマ区切りで指定した文字列。指定されていない文字列または空の文字列は、トレースが無効になります。
bufferUsageReportingInterval 正の整数 1000 DevTools トレース バッファ使用イベント間のミリ秒数。たとえば、1,000 に設定した場合、DevTools は 1 秒間に 1 回、トレース バッファの使用率を報告します。バッファの使用率が 100% であると報告された場合は、警告が生成されます。

返された機能

以下に、Chrome 固有のすべての返される機能(新しいセッションを作成するときに ChromeDriver が返すもの)のリストを示します。

名前 説明
chrome.chromedriverVersion 文字列 ChromeDriver のバージョン
userDataDir 文字列 Chrome が使用しているユーザーデータ ディレクトリのパス。これは「chrome」ディクショナリ内にあります。