水豚, chrome 无头:文件下载不工作

0s0u357o  于 2023-04-03  发布在  Go
关注(0)|答案(1)|浏览(89)

我试图下载一个文件与 chrome 无头。我的 chrome 版本是67. 0. 3396. 87和我的chromedriver有2. 4。
该文件没有出现在我的文件系统上。据我研究,这是Chrome无头浏览器的一个安全功能,可以防止文件下载,但可以再次打开。
这就是我想做的,关于这个主题:https://bugs.chromium.org/p/chromium/issues/detail?id=696481
还是没有效果。我尝试了不同的方法

Page.setDownloadBehavior

我复制了评论78的内容,但Chrome没有回应,或者至少它仍然不工作:

def enable_chrome_headless_downloads(driver, directory)
  bridge = driver.send(:bridge)
  path = '/session/:session_id/chromium/send_command'
  path[':session_id'] = bridge.session_id
  bridge.http.call(:post, path, {
    "cmd" => "Page.setDownloadBehavior",
    "params" => {
      "behavior" => "allow",
      "downloadPath" => directory,
    }
  })
end

我还检查了我是否可以手动下载一个文件与Headless Chromium 与

'--remote-debugging-port=9222'

但这也是不可能的。有人有主意吗,我能做些什么来让它起作用?
已经谢谢了!

kadbb459

kadbb4591#

Capybara.register_driver :headless_chrome do |app|
  options.add_argument('--headless')
  options.add_argument('--disable-gpu')
  options.add_argument('--window-size=1280,800')

  driver = Capybara::Selenium::Driver.new(app, browser: :chrome, options: options)

  ### Allow file downloads in Google Chrome when headless!!!
  ### https://bugs.chromium.org/p/chromium/issues/detail?id=696481#c89
  bridge = driver.browser.send(:bridge)

  path = '/session/:session_id/chromium/send_command'
  path[':session_id'] = bridge.session_id

  bridge.http.call(:post, path, cmd: 'Page.setDownloadBehavior',
                                params: {
                                  behavior: 'allow',
                                  downloadPath: '/tmp/downloads'
                                })
  ###

  driver
end

全部要点https://gist.github.com/bbonamin/4b01be9ed5dd1bdaf909462ff4fdca95

相关问题