開始使用 - 程式庫
簡介
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 發佈目標執行階段的驅動程式。如果您想要為其他平台捆綁,您可以透過在專案檔案中使用 all
、none
或 linux
、win
、osx
來覆寫此行為。
<PropertyGroup>
<PlaywrightPlatform>all</PlaywrightPlatform>
</PropertyGroup>
或
<PropertyGroup>
<PlaywrightPlatform>osx;linux</PlaywrightPlatform>
</PropertyGroup>