Capybara无头下载

时间:2015-01-26 17:46:35

标签: ruby selenium capybara headless

我对Capybara很新,所以我可能误解了一些东西。我尝试做的是通过点击链接下载CapybaraHeadless gem的文件。在这种情况下,我使用Vagrant page来测试它。

我使用以下代码尝试实现它:

require 'selenium-webdriver'
require 'capybara'
require 'headless'

class MyDownloader
  include Capybara::DSL

  def initialize

    headless = Headless.new(:destroy_at_exit => true)
    headless.start

    Capybara.configure do |config|
      config.default_driver = :selenium
    end

    profile = Selenium::WebDriver::Firefox::Profile.new
    profile['browser.download.dir'] = '/tmp'
    profile['browser.helperApps.neverAsk.saveToDisk'] = 'application/octet-stream'
    profile['browser.helperApps.alwaysAsk.force'] = false
    profile['browser.download.manager.showWhenStarting'] = false

    Capybara.register_driver :firefox do |app|
        Capybara::Selenium::Driver.new(app,
            browser: :firefox,
            profile: profile,
        )
    end

  end

  def download_stuff
    visit 'https://www.vagrantup.com/download-archive/v1.7.1.html'
    click_link('here')
  end

end

MyDownloader.new.download_stuff

sleep 10

我可以看到下载已经开始(.part目录中有一个/tmp文件),但是即使我等了很长时间(看到10秒睡眠真的很小)文件)它没有完成。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

我发现了它无法正常工作的原因。

我的代码中有2个问题:

  1. 错误的司机:

    Capybara.register_driver :selenium do |app|
    

    必须选择而不是

    Capybara.register_driver :firefox do |app|
    
  2. folderList 设置缺失:

    显然也需要这个设置:

    profile['browser.download.folderList'] = 2 # 2 - save to user defined location