下载没有rails的capybara文件

时间:2016-04-26 09:55:39

标签: javascript ruby selenium capybara

场景:尝试通过capybara访问外部URL以下载文件。必须使用Selenium或webkit作为驱动程序。不能使用机架测试,因为它不允许访问外部网址。

该网站使用iframe。

通过javascript提示文件下载:

    <a href="javascript:OpenFile('****.pdf', 2)">some_text_here</a>

单击该链接会提示本机浏览器下载确认框。 我尝试了以下方法: Selenium驱动程序:

  • 使用自定义配置文件 - &gt;没有效果,弹出窗口仍然出现

    Capybara.register_driver :selenium do |app|
    profile = Selenium::WebDriver::Firefox::Profile.new 
    profile['browser.download.dir'] = "~/Downloads"
    profile['browser.helperApps.neverAsk.saveToDisk'] = "application/pdf"
      Capybara::Selenium::Driver.new(app, :browser => :firefox, :profile => >profile)
    end
    
  • 点击链接前使用javascript-&gt;没效果

    within_frame(1) do
      page.evaluate_script('window.confirm = function() { return true; }')
      find(:xpath,"//span[@class='BoldText']/a").click
    end
    
  • 尝试使用提醒 - &gt;即使出现下载框也找不到

    page.driver.browser.switch_to.alert.accept
    -> No alert is present
    

Webkit驱动程序:

  • 尝试使用javascript - &gt;文件未被下载

  • page.accept_confirm找不到任何链接

如何下​​载文件?

1 个答案:

答案 0 :(得分:0)

应用程序使用application / octet-stream类型报告文件。添加

    profile['browser.helperApps.neverAsk.saveToDisk'] = "application/pdf, application/octet-stream"

在这种情况下解决了问题。