You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 09:51:10