跳到主要內容

開始使用 - 程式庫

簡介

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.org.tw/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.org.tw/dotnet");
await page.ScreenshotAsync(new()
{
Path = "screenshot.png"
});

現在執行它。

dotnet run

預設情況下,Playwright 以無頭模式執行瀏覽器。若要查看瀏覽器 UI,請將無頭選項設定為 false。您也可以使用 SlowMo 來減慢執行速度。在偵錯工具 章節中了解更多資訊。

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.org.tw/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>