我对Capybara
很新,所以我可能误解了一些东西。我尝试做的是通过点击链接下载Capybara
和Headless 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秒睡眠真的很小)文件)它没有完成。
我做错了什么?
答案 0 :(得分:1)
我发现了它无法正常工作的原因。
我的代码中有2个问题:
错误的司机:
Capybara.register_driver :selenium do |app|
必须选择而不是
Capybara.register_driver :firefox do |app|
folderList 设置缺失:
显然也需要这个设置:
profile['browser.download.folderList'] = 2 # 2 - save to user defined location