如何在Playwright中关闭并开启新浏览器会话/清除缓存与Cookie
解决方案
1. 实现无缓存的干净浏览器环境
你可以通过两种方式获得无Cookie、无缓存的干净环境,后者比重启浏览器更高效:
方式一:关闭并重启浏览器
// 关闭当前浏览器实例 await browser.close(); // 启动新的干净浏览器 const freshBrowser = await playwright.chromium.launch(); // 创建新上下文(默认完全隔离干净) const freshContext = await freshBrowser.newContext(); // 从上下文生成新页面 const freshPage = await freshContext.newPage();
方式二:创建隔离上下文(无需重启浏览器)
Playwright的每个BrowserContext都是完全隔离的,自带干净的Cookie和缓存,性能更优:
// 创建新的隔离上下文 const cleanContext = await browser.newContext(); // 从上下文生成干净页面 const cleanPage = await cleanContext.newPage(); // 使用完成后销毁上下文 await cleanContext.close();
2. 合并截图测试用例并保证干净环境
将两个测试合并为一个,在同一个用例中完成基准截图生成和对比,全程用干净环境加载页面:
test('fullpage screenshot baseline and comparison', async ({ playwright }) => { const browser = await playwright.chromium.launch(); // 第一步:生成基准截图(干净环境) const baselineContext = await browser.newContext(); const baselinePage = await baselineContext.newPage(); await baselinePage.goto('目标页面URL'); // 替换为你的页面地址 await baselinePage.screenshot({ path: `tests/baseline-snapshots/${pageName}.png`, fullPage: true }); await baselineContext.close(); // 第二步:截图对比(干净环境加载目标页面) const comparisonContext = await browser.newContext(); const comparisonPage = await comparisonContext.newPage(); await comparisonPage.goto('目标页面URL'); // 加载需要对比的页面版本 await expect(comparisonPage).toHaveScreenshot(`${pageName}.png`, { fullPage: true, baselinePath: 'tests/baseline-snapshots' // 指定基准截图存放目录 }); await comparisonContext.close(); await browser.close(); });
合并后,整个测试流程在一个用例内闭环,不需要依赖单个worker保证顺序,且每次页面加载都处于无缓存的干净环境,可正常参与并行执行。
内容的提问来源于stack exchange,提问作者JohnP2
相关产品推荐
相关产品推荐

