機能と 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");

独自のカスタム プロファイルを作成するには、user-data-dir スイッチを新しいディレクトリに設定して(コマンドラインまたは ChromeDriver から)Chrome を実行します。パスが存在しない場合、Chrome は指定された場所に新しいプロファイルを作成します。その後、必要に応じてプロファイルの設定を変更することができます。ChromeDriver はそのプロファイルを今後使用できるようになります。ブラウザで chrome://version を開き、Chrome で使用しているプロファイルを確認します。

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 はダウンロードの完了を自動的に待機しません。drive.quit() の呼び出しが早すぎると、ダウンロードが完了する前に Chrome が終了することがあります。
  • 相対パスは必ずしも機能するとは限りません。最良の結果を得るには、代わりにフルパスを使用してください。
  • Windows では、""使用します。「/」の使用Windows では信頼性に欠けます。
ChromeOptions options = new ChromeOptions();
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("download.default_directory", "/directory/path");
options.setExperimentalOption("prefs", prefs);

認定された機能

標準ファイルについては、Selenium のドキュメントW3C WebDriver 標準をご覧ください。 機能をサポートしています。ここでは Chrome 固有の 提供します

ChromeOptions オブジェクト

Chrome 固有の機能のほとんどは、ChromeOptions を通じて公開されます。 渡されます。一部の言語では、これは ChromeOptions クラスによって実装されます。イン 他の言語の場合、これらは goog:chromeOptions 辞書に保存されています。 選択できます。

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

perfLoggingPrefs オブジェクト

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

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

返される機能

これは、Chrome 固有の返されるすべての機能のリストです。(新しいセッションの作成時に ChromeDriver が返すもの)

名前 タイプ  説明 
chrome.chromedriverVersion 文字列 ChromeDriver のバージョン
userDataDir 文字列 Chrome が使用しているユーザーデータ ディレクトリのパスこれは「chrome」の内部で辞書