如何在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
相关产品推荐
相关产品推荐

