【问题标题】:Capybara headless download水豚无头下载
【发布时间】:2015-03-25 04:42:24
【问题描述】:

我对@9​​87654322@ 很陌生,所以我可能误解了一些东西。我要做的是通过单击链接下载带有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

我可以看到下载已经开始(/tmp 目录中有一个.part 文件),但是即使我等待很长时间(对于一个非常小的文件,请参阅 10 秒睡眠)它没有'未完成。

我做错了什么?

【问题讨论】:

    标签: ruby selenium capybara headless


    【解决方案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
      

    【讨论】:

      猜你喜欢
      • 2012-12-04
      • 2016-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-19
      • 1970-01-01
      • 2014-05-17
      • 2017-04-15
      相关资源
      最近更新 更多