使用Playwright测试微软Edge时抛出“Browser closed”异常求助
问题原因
日志里的Opening in existing browser session是关键——当你通过Channel指定本地Edge时,Playwright尝试启动的自动化浏览器实例被系统引导复用了已有的用户会话,而Playwright的自动化模式需要独立、干净的浏览器环境,无法接管已运行的用户会话,因此直接导致浏览器进程退出,抛出Browser closed异常。
解决方案
关闭所有Edge相关进程(包括后台驻留的)
打开任务管理器,结束所有msedge.exe进程,确保没有残留的Edge会话,再重新运行测试。这是最快速的临时解决方法。配置独立的用户数据目录
在BrowserTypeLaunchOptions中指定UserDataDir,让Playwright使用完全独立的浏览器配置文件,彻底避免和现有用户会话冲突:[TestMethod] public async Task LoadPlaywrightPage() { var playwright = await Playwright.CreateAsync(); var browser = await playwright.Chromium.LaunchAsync(new BrowserTypeLaunchOptions { Headless = false, Channel = "msedge", // 指定自定义路径,确保该目录可读写,不存在会自动创建 UserDataDir = @"C:\Temp\Playwright_Edge_Profile" }); var context = await browser.NewContextAsync(); var page = await context.NewPageAsync(); await page.GotoAsync("https://playwright.dev/dotnet/"); Assert.IsTrue((await page.TitleAsync()).Contains("Playwright .NET")); // 测试结束后关闭浏览器(建议添加,避免残留进程) await browser.CloseAsync(); }验证浏览器与Playwright版本兼容性
Playwright 1.25.0对Edge的版本有兼容范围(通常对应Chromium 104-106版本),如果你的本地Edge版本过新或过旧,可能导致启动失败:- 查看本地Edge版本(设置→关于Microsoft Edge)
- 如果版本不兼容,可以选择升级Playwright到对应版本,或者调整本地Edge版本到兼容范围。
关闭Edge的“恢复上次会话”功能
打开Edge的设置→启动时,选择“打开新标签页”,而非“继续上次会话”,避免浏览器启动时自动恢复现有会话导致冲突。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

