@javascript の場合のデフォルトドライバーである Selenium をドライバーとして使用することを想定しています。
Seleniumは、これに対するクロスブラウザー ソリューションを提供していません。ブラウザのネイティブ ダウンロード ウィンドウではなく、アプリケーションをテストしたいので、ダウンロードしたファイルを自動保存するようにブラウザに指示する必要があります。
Firefox を使用している場合:
Capybara.register_driver :selenium do |app|
profile = Selenium::WebDriver::Firefox::Profile.new
profile['browser.download.dir'] = "/path-to-folder/webdriver-downloads"
profile['browser.helperApps.neverAsk.saveToDisk'] = "application/pdf" # content-type of file that will be downloaded
Capybara::Selenium::Driver.new(app, :browser => :firefox, profile: profile)
end
Google Chrome を使用している場合:
Capybara.register_driver :selenium do |app|
profile = Selenium::WebDriver::Chrome::Profile.new
profile['download.prompt_for_download'] = false
profile['download.default_directory'] = "/path/to/dir"
Capybara::Selenium::Driver.new(app, :browser => :chrome, profile: profile)
end
次に、(ファイルのダウンロードを呼び出す) リンクをクリックすると、ファイルが指定したディレクトリに保存されます。