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

如何在Playwright C#的每次测试运行之间清除缓存?

如何在Playwright C#的每次测试运行之间清除缓存?

嘿,我来帮你搞定这个每次测试清缓存的问题~ 给你几个实用的方法,你可以根据自己的测试场景选:

  • 推荐方案:用隔离的浏览器上下文(高效又干净)
    Playwright里的BrowserContext就像一个独立的浏览器会话,缓存、Cookie、本地存储这些数据都是完全隔离的。每次测试都新建一个上下文,自动就能得到无缓存的干净环境,而且比每次重启浏览器快多了。

把你原来的代码改成这样就行:

var playwright = await Playwright.CreateAsync();
await using var browser = await playwright.Chromium.LaunchAsync(new BrowserTypeLaunchOptions
{
    Channel = "msedge",
    Headless = false
});

// 关键:每次测试都新建一个独立的上下文
await using var context = await browser.NewContextAsync();
var page = await context.NewPageAsync();
await page.GotoAsync("你的目标URL");

如果用xUnit/NUnit这类测试框架,记得把创建上下文的代码放到每个测试的初始化方法里(比如NUnit的[SetUp]、xUnit的构造函数),这样每次测试都会自动执行。

  • 手动清除现有上下文的缓存(适合复用上下文的场景)
    如果非要在同一个上下文里跑测试(不推荐,因为测试隔离性会打折扣),可以手动清除缓存:
// 在需要清除缓存的时机执行这段代码
await page.Context.ClearAsync(new BrowserContextClearOptions
{
    Cache = true
});

这样会清空当前上下文的所有缓存数据。

  • 直接禁用缓存(适合完全不需要缓存的测试)
    如果你的测试场景完全不需要缓存,也可以在创建上下文时直接禁用缓存功能:
await using var context = await browser.NewContextAsync(new BrowserNewContextOptions
{
    CacheEnabled = false
});

这样这个上下文里的所有页面都不会存储任何缓存内容,全程用全新的资源。

备注:内容来源于stack exchange,提问作者swathi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 16:08:17