機能は、ChromeDriver セッションのカスタマイズと構成に使用できるオプションです。このページでは、ChromeDriver でサポートされているすべての機能とその使用方法について説明します。
WebDriver 言語 API には、ChromeDriver に機能を渡す方法が用意されています。具体的なメカニズムは言語によって異なりますが、ほとんどの言語では次のいずれか、または両方のメカニズムを使用しています。
ChromeOptions
クラスを使用します。これは Java、Python などでサポートされています。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
辞書に保存されます。
perfLoggingPrefs
オブジェクト
perfLoggingPrefs
ディクショナリの形式は次のとおりです。すべてのキーは省略可能です。
返された機能
以下に、Chrome 固有のすべての返される機能(新しいセッションを作成するときに ChromeDriver が返すもの)のリストを示します。