メモログ

watir-webdriver でCSVファイルをダウンロードする

Firefox で CSV ファイルにアクセスすると、ダウンロードのダイアログが表示されるのですが、webdriver 上でダイアログが出てくるとハンドリングできない(たぶん)ので困る。ので、profile を設定してダイアログを表示しないようにする。そしてダウンロードするフォルダも一緒に設定する、という話。詳しくはFirefox 4 with watir webdriver: Need help using helperApps.neverAsk to save CSV without prompting - Stack OverflowBrowser Downloads | Watir WebDriverなどを参照

pdf ファイルや ico ファイルなどブラウザで処理しないような拡張子のファイルなどは同じような手順でダウンロード可能。jpg などの画像ファイルは基本的にブラウザ上で表示するのでこの設定を入れるだけではダウンロードの状態にすることはできないみたい。

profile = Selenium::WebDriver::Firefox::Profile.new
profile['browser.download.useDownloadDir'] = true
profile['browser.download.folderList'] = 2
profile['browser.download.dir'] = './download'
profile['browser.helperApps.neverAsk.saveToDisk'] = "text/plain,
    application/vnd.ms-excel, text/csv,
    text/comma-separated-values, application/octet-stream"
selenium = Selenium::WebDriver.for driver,:profile=>profile
b = Watir::Browser.new selenium
b.goto 'http://example.com/foobar.csv'

私について

Yutaka Yamaguchi
東京在住。TypeScript, Node.js, Reactなどフロンエンドが主力。Perlも書く。SwiftやRubyも過去には使ってた。過去のTOEIC 860くらい。