跳至主要内容

入门 - 库

简介

Playwright 可以与 MSTestNUnit 一起使用,也可以用作 Playwright 库(本指南)。如果您正在开发一个使用 Playwright 功能的应用程序,或者您将 Playwright 与其他测试运行器一起使用,请继续阅读。

用法

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

# Create project
dotnet new console -n PlaywrightDemo
cd PlaywrightDemo

# Add project dependency
dotnet add package Microsoft.Playwright
# Build the project
dotnet build
# Install required browsers - replace netX with actual output folder name, e.g. net8.0.
pwsh bin/Debug/netX/playwright.ps1 install

# If the pwsh command does not work (throws TypeNotFound), make sure to use an up-to-date version of PowerShell.
dotnet tool update --global PowerShell

创建一个 Program.cs,它将导航到 https://playwright.net.cn/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.net.cn/dotnet");
await page.ScreenshotAsync(new()
{
Path = "screenshot.png"
});

现在运行它。

dotnet run

默认情况下,Playwright 在无头模式下运行浏览器。要查看浏览器 UI,请将 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;

// Change the default 5 seconds timeout if you'd like.
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.net.cn/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>