You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Watir中实现Chrome无头模式的setDownloadBehavior功能

在Watir中实现Chrome无头模式的文件下载设置

我之前刚好碰到过类似的问题,Watir本身是基于Selenium WebDriver封装的,所以我们可以直接复用Selenium方案的核心逻辑,只需要调整下获取底层驱动的方式就行。下面是适配Watir的完整实现:

def enable_watir_headless_downloads(browser, download_directory)
  # 从Watir的browser实例中拿到底层的Selenium Driver对象
  driver = browser.driver
  bridge = driver.send(:bridge)
  
  # 构造Chrome DevTools命令的请求路径
  command_path = '/session/:session_id/chromium/send_command'
  command_path[':session_id'] = bridge.session_id
  
  # 发送允许下载的DevTools命令
  bridge.http.call(:post, command_path, {
    "cmd" => "Page.setDownloadBehavior",
    "params" => {
      "behavior" => "allow",
      "downloadPath" => download_directory
    }
  })
end

实际使用示例

# 初始化无头模式的Chrome浏览器
browser = Watir::Browser.new :chrome, headless: true

# 设置你的目标下载目录(替换成实际路径)
download_dir = File.expand_path("./my_downloads")
enable_watir_headless_downloads(browser, download_dir)

# 触发下载操作,比如点击页面上的下载链接
browser.link(text: "导出数据").click

为什么原Selenium方案在Watir中不生效?

因为Watir的Browser对象是对Selenium Driver的上层封装,原方案直接传入的是Watir浏览器实例,而非底层的Selenium驱动对象,自然无法执行后续的命令调用。我们只需要通过browser.driver拿到真正的Selenium Driver,就能复用原本的Chrome DevTools命令逻辑了。

内容的提问来源于stack exchange,提问作者Codeformer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:19:00