SeleniumでChromeを起動した際に、デフォルトのダウンロード保存先を指定する方法

SeleniumChromeを起動した際のデフォルトダウンロード保存先を指定する

SeleniumChromeを使う場合に、デフォルトのダウンロード保存先を指定する方法が分からなかったので調べたメモです。

Win + Rubyで確認しています。

リファレンス

Selenium実践入門 ―― 自動化による継続的なブラウザテスト (WEB+DB PRESS plus)

Selenium実践入門 ―― 自動化による継続的なブラウザテスト (WEB+DB PRESS plus)

やり方

色々調べましたが、プログラム内で直接定義するやり方は分からず、Chromeで使うUserDataのファイルをプログラム内で指定することで実現しました。自分が普段使っているChromeのUserDataとは別のファイルを設定できるので、ファイルをリポジトリに入れて使うこともできます。

CHROME_USER_DATA_PATH = Dir.pwd + "User Data\Default" # 絶対Pathで指定

caps = Selenium::WebDriver::Remote::Capabilities.chrome("chromeOptions" => {"args" => ["user-data-dir=#{CHROME_USER_DATA_PATH}"]})
driver = Selenium::WebDriver.for :chrome, :desired_capabilities => caps

内容

Selenium::WebDriver::Remote::Capabilitiesクラスのchromeメソッドを使って、Chrome用のdesired_capabilitiesを作ることができます。

ChromeOptionsを使うことで、色々な細かい設定ができるのですが、ここでUserDataのパスを指定して、自分の好きな設定を読み込ませることができます。そのため、あらかじめChromeの操作でダウンロード保存先を希望のものに変更しておいて、それで生成されたUserDataを使うことで、SeleniumChromeを起動した際のダウンロード保存先を任意のものに設定することができます。

ちなみに、ファイルとして置くのは(ダウンロード保存先を指定したい場合には)AppData\Local\Google\Chrome\User Data\Default\Preferencesのファイルだけで良いようでした。Macの場合には~/Library/Application Support/Google/Chrome/Default/Preferencesにあるようです。(Macの動作確認はしていないです)

Seleniumデザインパターン & ベストプラクティス

Seleniumデザインパターン & ベストプラクティス

関連記事

genius.hateblo.jp

genius.hateblo.jp

genius.hateblo.jp