2015-01-26 3 views
0

나는 꽤 Capybara에 익숙하다. 그래서 나는 오해했을 수도있다. 내가 뭘 하려는지 CapybaraHeadless gem 링크를 클릭하여 파일을 다운로드하는 것입니다. 이 경우 나는 그것을 테스트하기 위해 Vagrant page을 사용하고있다.Capybara 헤드리스 다운로드

나는 그것을 달성하기 위해 시도하는 다음 코드를 사용하고 있습니다 :

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 초 절전을 참조하십시오) 완료되지 않습니다.

내가 뭘 잘못하고 있니?

답변

1

왜 작동하지 않는지 알게되었습니다.

  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 
    
관련 문제