在没有轨道的水豚中下载文件

Downloading file in capybara without rails

本文关键字:下载 文件 轨道      更新时间:2023-09-26

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

该网站使用 iframe。

文件下载通过javascript提示,如下所示:

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

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

  • 使用自定义配置文件 ->不起作用,弹出窗口仍然显示

    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>不起作用

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

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

网络套件驱动程序:

  • 尝试使用 JavaScript -> 文件未下载

  • page.accept_confirm找不到任何链接

如何下载文件?

应用程序报告具有应用程序/八位字节流类型的文件。添加

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

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