入门指南 - 库
简介
Playwright 可以与 MSTest、NUnit 或 xUnit 基类一起使用,也可以作为 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.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来减慢执行速度。在调试工具section中了解更多信息。
await using var browser = await playwright.Firefox.LaunchAsync(new()
{
Headless = false,
SlowMo = 50,
});
使用断言
在使用自己的测试框架时,您可以采取以下措施来利用Playwright的网页优先断言功能。这些断言会自动重试直到满足条件,例如某个元素包含特定文本或达到超时时间:
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.dev/dotnet");
await Expect(page.GetByRole(AriaRole.Link, new() { Name = "Get started" })).ToBeVisibleAsync();
为不同平台打包驱动程序
Playwright 默认情况下仅会打包针对 .NET 发布目标运行时的驱动程序。如果您想为其他平台打包,可以通过在项目文件中使用 all
、none
或 linux
、win
、osx
来覆盖此行为。
<PropertyGroup>
<PlaywrightPlatform>all</PlaywrightPlatform>
</PropertyGroup>
或者:
<PropertyGroup>
<PlaywrightPlatform>osx;linux</PlaywrightPlatform>
</PropertyGroup>