機能とは、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 の起動後に適用する設定を指定できます。後者の場合は、Chrome コマンドライン スイッチ user-data-dir
を使用して、使用するプロファイルを 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 はダウンロードの完了を自動的に待機しません。早期に Driver.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);
認定される機能
ChromeDriver で受け入れられる標準機能については、Selenium のドキュメントと W3C WebDriver 標準をご覧ください。ここでは Chrome 固有の機能のみを記載しています。
ChromeOptions
オブジェクト
Chrome 固有の機能のほとんどは、ChromeOptions
オブジェクトを通じて公開されます。一部の言語では、これは ChromeOptions
クラスによって実装されます。他の言語では、必要なケーパビリティでは goog:chromeOptions
ディクショナリに保存されます。
perfLoggingPrefs
オブジェクト
perfLoggingPrefs ディクショナリの形式は次のとおりです(すべてのキーはオプションです)。
名前 | 種類 | デフォルト | 説明 |
---|---|---|---|
enableNetwork
|
boolean | true | ネットワーク ドメインからイベントを収集するかどうか。 |
enablePage
|
boolean | true | ページドメインからイベントを収集するかどうかを指定します。 |
traceCategories
|
string | (空白) | トレース イベントを収集する Chrome トレース カテゴリのカンマ区切り文字列。未指定または空の文字列を使用する��、トレースが無効になります。 |
bufferUsageReportingInterval
|
正の整数 | 1000 | DevTools トレース バッファ使用状況イベント間のリクエストされたミリ秒数。たとえば、1,000 の場合、1 秒に 1 回、DevTools はトレース バッファの空き容量が報告されます。バッファ使用量が 100% であることがレポートに示されている場合は、警告が発行されます。 |
返される機能
以下は、Chrome に固有の返されるすべての機能のリストです。(新しいセッションの作成時に ChromeDriver が返す内容)。
名前 | タイプ | 説明 |
---|---|---|
chrome.chromedriverVersion
|
文字列 | 最新バージョンの ChromeDriver |
userDataDir
|
文字列 | Chrome が使用しているユーザーデータ ディレクトリのパスです。「chrome」辞書内にあります |