ruby - 在 Chrome 中运行 headless 模式时将文件下载到路径

标签 ruby google-chrome selenium-chromedriver watir google-chrome-headless

我正在使用以下版本:

  • ruby 2.4.1
  • chromedriver 2.33
  • selenium-webdriver 3.7.0
  • watir 6.7.3
  • 页面对象 2.2.2
  • Chrome 浏览器 62.0.32

env.rb 文件包含下载目录的路径。 在 headless 模式下NOT 运行测试时,文件下载完美,但是当我 headless 运行时,什么也没有发生,文件也没有下载。 我使用的是 chromderiver 2.27 和 Chrome 浏览器 58.*,它在两种模式下都有效,有人知道我该如何克服吗?

最佳答案

这就是我的发现,它确实有效!

我在env.rb文件中配置headless模式的参数时是这样定义的:

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
                            })

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

关于ruby - 在 Chrome 中运行 headless 模式时将文件下载到路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47559973/

相关文章:

Ruby 如何构造动态正则表达式?

css - 使用 CSS 更改输入的 HTML5 占位符颜色在 Chrome 上不起作用

selenium - 如何禁用 'This type of file can harm your computer'弹出窗口

ruby - 我可以 "retroactively"从模块添加类方法(在已经包含该模块之后)吗?

ruby - 如何在 Ruby 中实现 goto 和 label 方法?

javascript - 如何编写一个针对以 "window.open()"打开的窗口的 Chrome 扩展程序?

html - 带字母间距的输入大小

python - 如何使用splinter下载知道文件的方向和名称

python - 写入 selenium 数据时 CSV 为空

css - 选择不包括第一行的表行