通常のChromeの場合、動画やPDFなどダウンロードできますが、SeleniumのChromeヘッドレスにするとダウンロードできません。それは通常時の設定とSelenium時の設定が別だからです。
そのため、ダウンロード時の追加設定が必要になります。
まずは普通に、Chromeのオプションを設定します。
opt = Selenium::WebDriver::Chrome::Options.new
opt.add_argument('--headless') # ヘッドレス
...
...
...
次にダウンロードのための設定(プレファレンス)をします。
dl_dir = "#{ENV['USERPROFILE']}\\Downloads"
dl_dir.gsub!("/","\\")
dl_pref = {
'prompt_for_download'=> false,
'default_directory'=> dl_dir, # バックスラッシュで絶対Path
'directory_upgrade'=> true
}
opt.add_preference(:download, dl_pref)
dl_dir は、ダウンロードファイルを格納するフォルダーで、相対パスではなく絶対パスで指定します。
しかもURL区切り文字はバックスラッシュです。
ENV['USERPROFILE'] のURL区切り文字は / のため gsub で置き換え処理をしています。
最後に、SeleniumのWebDriverにオプションを指定します。
wd = Selenium::WebDriver.for :chrome, options: opt
2021/12/09