Selenium Firefox Geckodriver 下载目录错误

Wrong download directory for Selenium Firefox Geckodriver

我一直在尝试让 Selenium 将文件下载到特定文件夹,但无济于事。

这是我当前的驱动程序设置,同时尝试影响下载目录:

#<Selenium::WebDriver::Firefox::Options:0x00007f94374c0bd0 @debugger_address=nil, 
@options={
  :browser_name=>"firefox",
  :args=>[],
  :prefs=>{
    "download.folderList"=>2,
    "download.dir"=>"./downloads",
    "download.directory_upgrade"=>true,
    "download.prompt_for_download"=>false,
    "download.default_directory"=>"./downloads",
    "plugins.plugins_disabled"=>"Chrome PDF Viewer", 
    "browser.helperApps.neverAsk.saveToDisk"=>"application/pdf, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel, text/csv"
  }
},
@profile=#<Selenium::WebDriver::Firefox::Profile:0x00007f94374c0e28 @model=nil, 
@additional_prefs={
  "browser.download.folderList"=>2, 
  "browser.download.manager.showWhenStarting"=>false, 
  "browser.download.downloadDir"=>"./downloads", 
  "browser.download.dir"=>"./downloads",
  "browser.download.directory_upgrade"=>true, 
  "browser.download.prompt_for_download"=>false, 
  "browser.download.default_directory"=>"./downloads"
}, @extensions={}>>

我试过:

我浏览了 selenium-webdriver docs and Mozilla Webdriver docs,但找不到设置下载目录的参考资料。

试试这个,让我知道它是否有效。

profile = Selenium::WebDriver::Firefox::Profile.new(ENV['APPDATA'] + '\Mozilla\Firefox\Profilesdeyh6ub.default-release')
profile['browser.download.dir'] = custom_download_dir
profile['browser.download.folderList'] = 2
options = Selenium::WebDriver::Firefox::Options.new(profile: profile)
driver = Selenium::WebDriver.for :firefox, options: options

并检查此路径 Mozilla\Firefox\Profilesdeyh6ub.default-release 并查看文件夹名称是什么并相应地提供文件夹名称,它将起作用。

自定义目录路径必须是绝对,格式如下:

  • 在 Mac,~Downloads 文件夹将是 /Users/[me]/Downloads

  • 在Rails中,假设要将下载内容放在lib/custom_downloads中,指定的目录应该是Dir.pwd + '/lib/custom_downloads'.

对我有用的代码:

profile = Selenium::WebDriver::Firefox::Profile.new
profile['browser.download.folderList'] = 2
profile['browser.download.dir'] = Dir.pwd + '/forecastsdir'
profile['browser.helperApps.neverAsk.saveToDisk'] = ('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel')
options = Selenium::WebDriver::Firefox::Options.new(profile: profile, args: ['-headless'])
driver = Selenium::WebDriver.for :firefox, options: options

非常感谢@Rajagopalan (+1) 的帮助。