在Chrome中运行无头模式时,将文件下载到路径

the*_*Guy 3 ruby google-chrome watir selenium-chromedriver google-chrome-headless

我使用以下版本:

  • Ruby 2.4.1
  • chromedriver 2.33
  • selenium-webdriver 3.7.0
  • watir 6.7.3
  • page-object 2.2.2
  • Chrome浏览器62.0.32

env.rb文件包含下载目录的路径.运行测试时不要在无头的模式下文件下载完美的,但是当我运行它无头什么也没有发生,文件没有下载.我使用的是chromderiver 2.27和Chrome Browser 58.*它在两种模式下都有效,有人知道我怎么能克服这个问题?

the*_*Guy 12

所以这就是我发现的,它绝对有效!

在env.rb文件中,当我为无头模式配置参数时,我将其定义为:

options = Selenium::WebDriver::Chrome::Options.new
options.add_argument('--headless') 
options.add_argument('--no-sandbox')
options.add_argument('--disable-gpu')
options.add_argument('--disable-popup-blocking')
options.add_argument('--window-size=1366,768')
options.add_preference(:download, directory_upgrade: true,
                                prompt_for_download: false,
                                default_directory: DOWNLOAD_DIR)

options.add_preference(:browser, set_download_behavior: { behavior: 'allow' })

$browser = Selenium::WebDriver.for :chrome, options: options

bridge = $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: DOWNLOAD_DIR
                            })
Run Code Online (Sandbox Code Playgroud)

感谢您在Chromium的错误网页上发表评论89:https://bugs.chromium.org/p/chromium/issues/detail? id = 696481