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

如何在控制台或ASP.NET Core后台服务中运行Playwright代码(无需NUnit)

问题

我编写了一段Playwright测试代码,但不想通过NUnit测试运行器执行,希望在控制台应用或ASP.NET Core后台服务中运行。请问无需测试运行器的最简Playwright配置方式是什么?

当前我的控制台应用代码如下:

using Microsoft.Playwright;

var browserTest = new Microsoft.Playwright.NUnit.BrowserTest();
var context = await browserTest.NewContext();
var page = await context.NewPageAsync();
await page.SetViewportSizeAsync(600,800);
await page.GotoAsync("https://www.google.com/");

执行时,await browserTest.NewContext();语句触发了NullReferenceException。

我的环境配置:

  • .NET 7
  • Chromium浏览器
  • 操作系统:Linux(Docker)
解决方案

出错原因是BrowserTest是NUnit测试框架专用基类,依赖测试运行器的初始化逻辑,直接实例化会导致内部成员未初始化,进而抛出空引用异常。要在控制台或后台服务中运行Playwright,直接使用Playwright原生API即可,无需依赖测试框架类。

最简实现步骤

  1. 安装Playwright依赖
    控制台应用需安装Microsoft.Playwright NuGet包,同时执行playwright install命令安装浏览器二进制文件(Docker环境需在构建阶段执行)。

  2. 使用原生API编写代码
    通过Playwright.CreateAsync()初始化实例,再启动浏览器、创建上下文和页面,示例代码如下:

using Microsoft.Playwright;

// 初始化Playwright实例
using var playwright = await Playwright.CreateAsync();
// 启动Chromium浏览器,配置Docker适配参数
await using var browser = await playwright.Chromium.LaunchAsync(new BrowserTypeLaunchOptions
{
    Headless = true, // Docker环境推荐启用无头模式
    Args = new[] { "--no-sandbox", "--disable-dev-shm-usage" } // Linux/Docker必需参数,避免权限和资源问题
});

// 创建带视口配置的浏览器上下文
await using var context = await browser.NewContextAsync(new BrowserNewContextOptions
{
    ViewportSize = new ViewportSize { Width = 600, Height = 800 }
});

// 创建页面并执行操作
var page = await context.NewPageAsync();
await page.GotoAsync("https://www.google.com/");

// 可添加后续操作,比如截图、元素交互等
await page.ScreenshotAsync(new PageScreenshotOptions { Path = "google_screenshot.png" });
  1. Docker环境额外配置
    • 构建镜像时需安装Playwright依赖的系统库,在Dockerfile中添加:
      RUN apt-get update && apt-get install -y --no-install-recommends \
          libnss3 libatk1.0-0 libatk-bridge2.0-0 libcups2 libdrm2 libxkbcommon0 \
          libxcomposite1 libxdamage1 libxfixes3 libxrandr2 libgbm1 libasound2
      
    • 在构建阶段执行playwright install chromium命令安装Chromium浏览器。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 07:03:11