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

