1

私はキュウリを使用してアプリケーション(Railsにあります)をテストしています。現在、ファイルのダウンロードをテストする際に問題が発生しています。私はバックボーンを使用しているので、すべての機能に@javascriptタグを付けています。私は次のようなstackoverflowで提供されるソリューションを試しました:キュウリテストファイルのダウンロードですが、それらはラックテスト中です。キュウリに@javascriptがあるときにファイルダウンロードボックスをクリックする方法を知りたいですか?:のような応答ヘッダーを検証しようとしましたpage.response_headers['Content-Type'].should == "text/csv"が、capybaraではサポートされていないことが示されています。

任意の提案をいただければ幸いです。

4

1 に答える 1

3

@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

次に、(ファイルのダウンロードを呼び出す) リンクをクリックすると、ファイルが指定したディレクトリに保存されます。

于 2013-02-17T14:59:49.850 に答える