黄瓜文件下载@javascript标签功能

时间:2013-02-17 12:12:38

标签: ruby-on-rails testing cucumber capybara

我正在使用黄瓜来测试我的应用程序(在Rails中)。现在,我有测试下载文件的问题。我正在使用骨干,所以我在每个功能上加上@javascript标签。我已经完成了stackoverflow中提供的解决方案,如:cucumber test file download但它们是在机架测试中。我想知道当我们在黄瓜中有@javascript时如何点击文件下载框?我正在尝试验证响应标头,例如:page.response_headers['Content-Type'].should == "text/csv",但它表明它在水豚中不受支持。

任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:3)

我假设你使用Selenium作为驱动程序,在@javascript的情况下是默认驱动程序。

Selenium doesn't provide cross-browser solution for this。您想测试您的应用程序,而不是浏览器的本机下载窗口,因此您应该告诉浏览器自动保存下载的文件。

如果you use 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

如果you use 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

然后单击链接(调用文件下载),文件保存到指定目录。