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

如何使用Selenium在Opera浏览器中下载PDF文件?

解决OperaDriver中PDF自动下载而非打开的配置问题

Opera虽然基于Chromium内核,但在Selenium配置上确实和Chrome有一些细微差异,你的Chrome配置没问题,但Opera需要额外调整几个关键参数才能让PDF自动下载。我之前帮人排查过类似问题,给你整理了可行的配置方案:

首先,你需要在偏好设置里显式禁用Opera内置的PDF查看器插件,同时补充几个辅助配置。修改后的代码如下:

OperaOptions operaOptions = new OperaOptions();
HashMap<String, Object> prefs = new HashMap<String, Object>();

// 强制PDF文件外部打开(即触发下载)
prefs.put("plugins.always_open_pdf_externally", true);
// 禁用内置的Chrome PDF Viewer插件(Opera基于Chromium,这个插件默认启用)
prefs.put("plugins.plugins_disabled", new String[]{"Chrome PDF Viewer"});
// 禁用PDF.js查看器(部分Opera版本依赖这个处理PDF)
prefs.put("pdfjs.disabled", true);
// 指定下载目录
prefs.put("download.default_directory", downloadDirectory);
// 关闭下载前的提示弹窗
prefs.put("download.prompt_for_download", false);
// 允许自动升级下载目录
prefs.put("download.directory_upgrade", true);
// 禁用弹出窗口拦截,避免下载相关弹窗干扰
prefs.put("profile.default_content_settings.popups", 0);
// 确保不会自动打开任何扩展名的文件
prefs.put("download.extensions_to_open", "");

operaOptions.setExperimentalOption("prefs", prefs);
operaOptions.setBinary("c:\\Program Files\\Opera\\78.0.4093.112\\opera.exe");

// 关键注意点:确保你的OperaDriver版本和Opera浏览器版本完全匹配!
WebDriver driver = new OperaDriver(operaOptions);

几个需要重点关注的细节:

  • 插件禁用:Opera默认启用了Chromium的PDF查看器,仅设置always_open_pdf_externally可能不足以触发下载,必须显式禁用对应的插件才能生效。
  • 版本匹配:OperaDriver的版本必须和你使用的Opera浏览器版本(78.0.4093.112)完全一致,版本不兼容会导致所有配置失效,这是很多人容易忽略的核心问题。
  • 手动验证:你可以先手动打开Opera,进入chrome://settings/content/pdfDocuments,设置“下载PDF文件而非在浏览器中打开它们”,确认手动操作能正常下载后,再用上述代码配置Selenium,这样可以排除浏览器本身的设置问题。

如果还是不行,可以尝试在启动驱动前,清除Opera的缓存和用户数据,避免旧的设置干扰新配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 04:32:29