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

Playwright测试运行缓慢求助:Selenium迁移后性能未达预期

Playwright性能优化方案

1. 复用Playwright与Browser实例

你当前的测试代码每个用例都重复初始化Playwright、Browser实例,这是最核心的性能浪费点。Playwright的Browser实例属于重量级资源,启动耗时极高,正确做法是在所有测试全局初始化一次,测试结束后统一销毁。

以xUnit为例,可通过IClassFixture实现全局复用:

public class PlaywrightFixture : IDisposable
{
    public IPlaywright Playwright { get; private set; }
    public IBrowser Browser { get; private set; }

    public PlaywrightFixture()
    {
        Playwright = Playwright.CreateAsync().GetAwaiter().GetResult();
        Browser = Playwright.Chromium.LaunchAsync(new BrowserTypeLaunchOptions
        {
            Headless = true,
            Args = new[] { "--disable-gpu", "--no-sandbox", "--disable-dev-shm-usage" }
        }).GetAwaiter().GetResult();
    }

    public void Dispose()
    {
        Browser?.CloseAsync().GetAwaiter().GetResult();
        Playwright?.Dispose();
    }
}

// 测试类关联Fixture实现复用
public class SpeedTests : IClassFixture<PlaywrightFixture>
{
    private readonly IBrowser _browser;

    public SpeedTests(PlaywrightFixture fixture)
    {
        _browser = fixture.Browser;
    }

    [Fact]
    public async Task SpeedTest()
    {
        // 每个测试仅创建轻量级的Context和Page
        using var context = await _browser.NewContextAsync();
        var page = await context.NewPageAsync();
        await page.GotoAsync("https://www.google.co.uk/");
    }
}

2. 优化浏览器启动参数

添加以下参数可降低资源占用、提升启动速度:

  • --disable-gpu:无头模式下禁用GPU加速,减少不必要开销
  • --no-sandbox:关闭沙箱机制,缩短启动时间(仅建议测试环境使用)
  • --disable-dev-shm-usage:避免低内存环境下的资源不足问题
  • --single-process:单进程运行,减少进程创建开销

3. 控制并行测试资源

并行测试时无限制创建实例会导致CPU/内存过载,反而拖慢速度:

  • 根据CPU核心数限制并行测试数量,避免过度并行
  • 若测试场景允许,可复用BrowserContext(注意规避测试状态污染风险)

4. 调整页面加载等待策略

默认GotoAsync会等待页面完全加载(Load事件),可根据需求调整为更轻量的等待策略:

await page.GotoAsync("https://www.google.co.uk/", new PageGotoOptions
{
    WaitUntil = WaitUntilState.DOMContentLoaded
});

也可以直接等待目标交互元素出现后再继续,比等待全页加载更高效。

5. 尝试更轻量的浏览器

Chromium已是Playwright中速度较快的选项,但部分场景下WebKit的启动速度会更优,可根据测试需求尝试切换。


内容的提问来源于stack exchange,提问作者Keiggo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 00:32:11