如何在Playwright Java中禁用Chrome新标签页PDF查看器
解决Playwright Chromium禁用内置PDF查看器的问题
问题分析
你给Chromium调用setFirefoxUserPrefs()方法是无效的——这个方法仅针对Firefox浏览器生效。Chromium需要通过启动参数或浏览器上下文偏好设置来配置PDF查看器行为。
有效解决方案
方案1:通过启动参数+上下文偏好配置(推荐)
直接在Chromium启动时添加禁用PDF查看器的参数,同时配合上下文偏好设置实现「始终外部打开PDF」:
private void PlaywrightSmokeTestConfigureInit(String browserType) { playwright = Playwright.create(); ArrayList<String> arguments = new ArrayList<>(); arguments.add("--start-fullscreen"); // 添加禁用Chrome PDF查看器的启动参数 arguments.add("--disable-pdf-extension"); arguments.add("--pdfjs-disable"); boolean headless = false; switch (browserType) { case "chromium": // 创建浏览器上下文时设置Chromium偏好 BrowserContext context = playwright.chromium() .launch(new BrowserType.LaunchOptions() .setChannel(browserType) .setHeadless(headless) .setArgs(arguments)) .newContext(new Browser.NewContextOptions() .setPreferences(Map.of( "plugins.always_open_pdf_externally", true, "pdfjs.disabled", true, "plugins.plugins_disabled", new String[]{"Chrome PDF Viewer"} ))); browser = context.browser(); break; case "firefox": Map<String, Object> firefoxPrefs = new HashMap<>(); firefoxPrefs.put("pdfjs.disabled", true); firefoxPrefs.put("plugins.always_open_pdf_externally", true); browser = playwright.firefox().launch(new BrowserType.LaunchOptions() .setChannel(browserType) .setHeadless(headless) .setArgs(arguments) .setFirefoxUserPrefs(firefoxPrefs)); break; // 其他浏览器分支... } }
方案2:自动化修改Chrome设置页面(备选)
如果需要通过chrome://settings/content/pdfDocuments页面配置,可以自动化操作该页面:
// 在浏览器上下文创建后,打开设置页面并修改 Page settingsPage = context.newPage(); settingsPage.navigate("chrome://settings/content/pdfDocuments"); // 等待设置项加载(不同Chrome版本可能选择器不同,需自行调整) settingsPage.waitForSelector("settings-toggle#alwaysOpenPdfExternally"); // 点击切换为「始终用外部应用打开PDF」 settingsPage.click("settings-toggle#alwaysOpenPdfExternally");
关键注意点
- 禁止给Chromium使用
setFirefoxUserPrefs(),该方法仅对Firefox生效 - Chromium的偏好设置需在
Browser.NewContextOptions()中通过setPreferences()传递 - 启动参数
--disable-pdf-extension和--pdfjs-disable可直接禁用内置PDF查看器扩展
内容的提问来源于stack exchange,提问作者Angel Dayredzhiev
相关产品推荐
相关产品推荐

