跳到主要内容

入门指南 - 库

简介

Playwright 既可以与 MSTest、NUnit 或 xUnit 基类 配合使用,也可以作为 Playwright 库使用(本指南介绍的内容)。如果你正在开发一个利用 Playwright 功能的应用程序,或者正在将 Playwright 与其他测试运行器配合使用,请继续阅读。

用法

创建一个控制台项目并添加 Playwright 依赖项。


# 创建项目
dotnet new console -n PlaywrightDemo
cd PlaywrightDemo


# 添加项目依赖项
dotnet add package Microsoft.Playwright

# 生成项目
dotnet build

# 安装所需的浏览器 - 将 netX 替换为实际的输出文件夹名称,例如 net8.0。
pwsh bin/Debug/netX/playwright.ps1 install


# 如果 pwsh 命令不起作用(抛出 TypeNotFound 错误),请确保使用最新版本的 PowerShell。
dotnet tool update --global PowerShell

创建一个 Program.cs 文件,该文件将导航到 https://playwright.dev/dotnet 并在 Chromium 中截取屏幕截图。

using Microsoft.Playwright;

using var playwright = await Playwright.CreateAsync();
await using var browser = await playwright.Chromium.LaunchAsync();
var page = await browser.NewPageAsync();
await page.GotoAsync("https://playwright.dev/dotnet");
await page.ScreenshotAsync(new()
{
Path = "screenshot.png"
});

现在运行它。

dotnet run

默认情况下,Playwright 以无头模式运行浏览器。若要查看浏览器用户界面,请将 Headless 选项设置为 false。你还可以使用 SlowMo 来减慢执行速度。在调试工具 部分 中了解更多信息。

await using var browser = await playwright.Firefox.LaunchAsync(new()
{
Headless = false,
SlowMo = 50,
});

使用断言

当你使用自己的测试框架时,可以通过以下方式利用 Playwright 以 Web 为优先的断言。这些断言会自动重试,直到条件满足(例如元素具有特定文本)或达到超时时间:

using Microsoft.Playwright;
using static Microsoft.Playwright.Assertions;

// 如果你愿意,可以更改默认的 5 秒超时时间。
SetDefaultExpectTimeout(10_000);

using var playwright = await Playwright.CreateAsync();
await using var browser = await playwright.Chromium.LaunchAsync();
var page = await browser.NewPageAsync();
await page.GotoAsync("https://playwright.dev/dotnet");
await Expect(page.GetByRole(AriaRole.Link, new() { Name = "Get started" })).ToBeVisibleAsync();

为不同平台捆绑驱动程序

默认情况下,Playwright 仅捆绑 .NET 发布目标运行时的驱动程序。如果你想为其他平台捆绑,可以在项目文件中使用 allnonelinuxwinosx 来覆盖此行为。

<PropertyGroup>
<PlaywrightPlatform>all</PlaywrightPlatform>
</PropertyGroup>

或者:

<PropertyGroup>
<PlaywrightPlatform>osx;linux</PlaywrightPlatform>
</PropertyGroup>