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

如何在Chromedriver中禁用内置PDF查看器(Ruby+Watir环境)

解决Watir+Chrome禁用内置PDF查看器的问题

我来帮你搞定这个!之前用Watir做Web测试时,也跟你一样卡在了禁用Chrome内置PDF查看器这一步,试了好几种配置都没效果,后来终于摸清楚了正确的姿势。

首先,你之前的配置可能有两个小问题:一是Watir新版本的参数写法变了,二是少了一个关键的偏好设置项。下面是亲测有效的完整代码:

require 'watir'

# 构建Chrome的偏好设置
pdf_prefs = {
  # 核心:禁用内置PDF查看器并强制外部处理
  plugins: {
    plugins_disabled: ['Chrome PDF Viewer'],
    always_open_pdf_externally: true # 这个是关键!没有它可能还是会用内置查看器
  },
  # 配置自动下载到指定目录,不弹出下载提示
  download: {
    prompt_for_download: false,
    directory_upgrade: true,
    default_directory: File.expand_path('./pdf_downloads', __dir__) # 用绝对路径更靠谱,避免路径问题
  }
}

# 初始化浏览器:注意新版本Watir要把prefs放在options里
@browser = Watir::Browser.new :chrome, options: { prefs: pdf_prefs }

几个必须注意的关键点:

  • 参数写法:旧版Watir可能支持直接传:prefs,但现在新版本需要把偏好设置嵌套在:options里,否则配置不会生效。
  • always_open_pdf_externally:这个设置是强制Chrome不使用内置查看器,直接触发下载或者调用外部PDF程序,缺了它的话,即使禁用了插件,Chrome可能还是会用内置的查看组件。
  • 绝对路径:下载目录最好用绝对路径,File.expand_path可以帮你把相对路径转换成可靠的绝对路径,避免因为工作目录变化导致下载路径出错。

额外排查步骤(如果还是没生效):

  • 检查Chromedriver和Chrome浏览器的版本是否匹配:版本不兼容会导致很多配置失效,你可以在终端输入chromedriver --version查看驱动版本,再对比Chrome浏览器的版本(Chrome菜单→关于Google Chrome)。
  • 验证插件是否真的被禁用:启动浏览器后,访问chrome://extensions/,开启右上角的「开发者模式」,搜索「Chrome PDF Viewer」,确认它处于禁用状态。
  • 尝试添加启动参数:如果还是不行,可以试试在初始化时添加禁用插件的启动参数,不过这会禁用所有插件,仅作为排查用:
@browser = Watir::Browser.new :chrome, options: { 
  prefs: pdf_prefs,
  args: ['--disable-plugins']
}

内容的提问来源于stack exchange,提问作者Alejandro Garcia Alfonso

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:43:55