如何在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
相关产品推荐
相关产品推荐

