Playwright Java无法在无痕窗口打开浏览器问题求助
Playwright Java 无法打开无痕窗口并绕过Windows SSO的解决方案
问题分析
你当前的代码尝试通过给Chrome启动参数添加--incognito来打开无痕窗口,但这种方式不符合Playwright的最佳实践,无法真正隔离浏览器上下文,导致系统依然自动使用Windows SSO凭证访问目标应用,触发未授权错误。
解决步骤
1. 用Playwright上下文隔离实现无痕模式
Playwright中,每个BrowserContext都是独立的隔离环境,启用incognito选项即可创建真正的无痕上下文,无需给浏览器启动参数添加--incognito。
2. 添加参数禁用Windows自动SSO
通过Chrome启动参数禁用集成Windows身份验证,避免系统自动填充SSO凭证。
修改后的代码
Launchbrowser.java
package org.ex.pw; import com.microsoft.playwright.*; import java.nio.file.Paths; import java.util.Arrays; import java.util.List; public class Launchbrowser { public static void main(String[] args) throws InterruptedException { Playwright playwright = Playwright.create(); String executablePath = "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe"; // 添加禁用自动SSO和密码管理的参数 List<String> browserArgs = Arrays.asList( "--disable-features=PasswordManager,AutofillServerContext", "--auth-server-allowlist=", // 清空允许自动认证的服务器列表 "--disable-autofill-keyboard-accessory-view" ); Browser browser = playwright.chromium() .launch(new BrowserType.LaunchOptions() .setExecutablePath(Paths.get(executablePath)) .setArgs(browserArgs) .setHeadless(false)); // 创建无痕模式的上下文,这是关键 BrowserContext context = browser.newContext(new Browser.NewContextOptions() .setIncognito(true)); Page page = context.newPage(); page.navigate("https://www.google.com"); // 替换为你的内网应用URL System.out.println("pageTitle=" + page.title()); Thread.sleep(25000); context.close(); browser.close(); playwright.close(); } }
关键说明
- 移除了浏览器启动参数中的
--incognito,改为通过BrowserContext的setIncognito(true)创建隔离的无痕环境,这是Playwright官方推荐的方式,能彻底隔离浏览器状态。 - 添加的Chrome参数会禁用密码管理器和自动填充功能,阻止Windows SSO凭证自动应用到目标应用。
build.gradle无需修改,当前依赖的Playwright 1.44.0版本完全支持上述特性。
内容的提问来源于stack exchange,提问作者sampath
相关产品推荐
相关产品推荐

