Undo
Undo

Reputation: 25687

Downloading files with Watir Webdriver

I'd like to download a file from a page using Watir Webdriver. I need to be able to set the download location to a directory I define. I found this page, but the code there doesn't work:

profile = Selenium::WebDriver::Chrome::Profile.new
profile['download.prompt_for_download'] = false
profile['download.default_directory'] = download_directory

b = Watir::Browser.new :chrome, :profile => profile

(where download_directory is just my desktop) gives this:

Selenium::WebDriver::Error::UnknownError: unknown error: cannot parse capability: chromeOptions
from unknown error: unrecognized chrome option: profile
  (Driver info: chromedriver=2.19.346063 (38b35413bd4a486d436a9749e090454bc9ff6708),platform=Mac OS X 10.11.0 x86_64)
from /Users/myusername/.rvm/gems/ruby-1.9.3-p551/gems/selenium-webdriver-2.48.1/lib/selenium/webdriver/remote/response.rb:70:in `assert_ok'

I'm guessing that code was for an old version of Watir. How can I set Chrome's download location through Watir?

Upvotes: 4

Views: 2529

Answers (2)

Undo
Undo

Reputation: 25687

Building on Stephan's answer, I found that I can use this shorter/cleaner version:

preferences = { 
  :download => {
    :prompt_for_download => false,
    :directory_upgrade => true,
    :default_directory => "download_directory"
  }   
}   

browser = Watir::Browser.new :chrome, :prefs => preferences

Upvotes: 5

Stepan
Stepan

Reputation: 342

your example worked for wery old chrome (webdriver 1) for new you must this code:

prefs = {
    'download' => {
        'default_directory' => download_directory,
        'prompt_for_download' => false,
    },
    'profile' => {
        'default_content_settings' => {'multiple-automatic-downloads' => 1}, #for chrome version olde ~42
        'default_content_setting_values' => {'automatic_downloads' => 1}, #for chrome newe 46
    }
}

caps = Selenium::WebDriver::Remote::Capabilities.chrome
caps['chromeOptions'] = {:prefs => prefs}

b = Watir::Browser.new :chrome, :desired_capabilities => caps

more you can reed in my old answer on this question

Upvotes: 5

Related Questions