安裝
簡介
Playwright 專為滿足端對端測試需求而建立。Playwright 支援所有現代渲染引擎,包括 Chromium、WebKit 和 Firefox。在 Windows、Linux 和 macOS 上測試,無論是本機或在 CI 上,支援無頭或有頭模式,並提供原生行動裝置模擬。
您可以選擇使用 Playwright 提供的 MSTest、NUnit 或 xUnit 基底類別來撰寫端對端測試。這些類別支援在多個瀏覽器引擎上執行測試、平行處理測試、調整啟動/情境選項,並立即取得每個測試的 Page/BrowserContext 執行個體。或者,您可以使用程式庫手動撰寫測試基礎架構。
- 首先使用
dotnet new
建立新專案。這會建立包含UnitTest1.cs
檔案的PlaywrightTests
目錄:
- MSTest
- NUnit
- xUnit
- xUnit v3
dotnet new nunit -n PlaywrightTests
cd PlaywrightTests
dotnet new mstest -n PlaywrightTests
cd PlaywrightTests
dotnet new xunit -n PlaywrightTests
cd PlaywrightTests
dotnet new xunit -n PlaywrightTests
cd PlaywrightTests
- 安裝必要的 Playwright 相依套件:
- MSTest
- NUnit
- xUnit
- xUnit v3
dotnet add package Microsoft.Playwright.NUnit
dotnet add package Microsoft.Playwright.MSTest
dotnet add package Microsoft.Playwright.Xunit
dotnet add package Microsoft.Playwright.Xunit.v3
- 建置專案,使
playwright.ps1
在bin
目錄中可用:
dotnet build
- 安裝所需的瀏覽器。此範例使用
net8.0
,如果您使用不同版本的 .NET,您需要調整指令並將net8.0
變更為您的版本。
pwsh bin/Debug/net8.0/playwright.ps1 install
如果 pwsh
不可用,您需要安裝 PowerShell。
新增範例測試
使用下列程式碼編輯 UnitTest1.cs
檔案,以建立範例端對端測試:
- MSTest
- NUnit
- xUnit
- xUnit v3
UnitTest1.cs
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using Microsoft.Playwright;
using Microsoft.Playwright.NUnit;
using NUnit.Framework;
namespace PlaywrightTests;
[Parallelizable(ParallelScope.Self)]
[TestFixture]
public class ExampleTest : PageTest
{
[Test]
public async Task HasTitle()
{
await Page.GotoAsync("https://playwright.dev");
// 期望標題「包含」子字串。
await Expect(Page).ToHaveTitleAsync(new Regex("Playwright"));
}
[Test]
public async Task GetStartedLink()
{
await Page.GotoAsync("https://playwright.dev");
// 點擊開始使用連結。
await Page.GetByRole(AriaRole.Link, new() { Name = "Get started" }).ClickAsync();
// 期望頁面有名為 Installation 的標題。
await Expect(Page.GetByRole(AriaRole.Heading, new() { Name = "Installation" })).ToBeVisibleAsync();
}
}
UnitTest1.cs
using System.Text.RegularExpressions;
using Microsoft.Playwright;
using Microsoft.Playwright.MSTest;
namespace PlaywrightTests;
[TestClass]
public class ExampleTest : PageTest
{
[TestMethod]
public async Task HasTitle()
{
await Page.GotoAsync("https://playwright.dev");
// 期望標題「包含」子字串。
await Expect(Page).ToHaveTitleAsync(new Regex("Playwright"));
}
[TestMethod]
public async Task GetStartedLink()
{
await Page.GotoAsync("https://playwright.dev");
// 點擊開始使用連結。
await Page.GetByRole(AriaRole.Link, new() { Name = "Get started" }).ClickAsync();
// 期望頁面有名為 Installation 的標題。
await Expect(Page.GetByRole(AriaRole.Heading, new() { Name = "Installation" })).ToBeVisibleAsync();
}
}
UnitTest1.cs
using System.Text.RegularExpressions;
using Microsoft.Playwright;
using Microsoft.Playwright.Xunit;
namespace PlaywrightTests;
public class UnitTest1: PageTest
{
[Fact]
public async Task HasTitle()
{
await Page.GotoAsync("https://playwright.dev");
// 期望標題「包含」子字串。
await Expect(Page).ToHaveTitleAsync(new Regex("Playwright"));
}
[Fact]
public async Task GetStartedLink()
{
await Page.GotoAsync("https://playwright.dev");
// 點擊開始使用連結。
await Page.GetByRole(AriaRole.Link, new() { Name = "Get started" }).ClickAsync();
// 期望頁面有名為 Installation 的標題。
await Expect(Page.GetByRole(AriaRole.Heading, new() { Name = "Installation" })).ToBeVisibleAsync();
}
}
UnitTest1.cs
using System.Text.RegularExpressions;
using Microsoft.Playwright;
using Microsoft.Playwright.Xunit.v3;
namespace PlaywrightTests;
public class UnitTest1: PageTest
{
[Fact]
public async Task HasTitle()
{
await Page.GotoAsync("https://playwright.dev");
// 期望標題「包含」子字串。
await Expect(Page).ToHaveTitleAsync(new Regex("Playwright"));
}
[Fact]
public async Task GetStartedLink()
{
await Page.GotoAsync("https://playwright.dev");
// 點擊開始使用連結。
await Page.GetByRole(AriaRole.Link, new() { Name = "Get started" }).ClickAsync();
// 期望頁面有名為 Installation 的標題。
await Expect(Page.GetByRole(AriaRole.Heading, new() { Name = "Installation" })).ToBeVisibleAsync();
}
}
執行範例測試
預設情況下,測試會在 Chromium 上執行。您可以透過 BROWSER
環境變數或調整啟動組態選項來設定此行為。測試以無頭模式執行,這意味著執行測試時不會開啟瀏覽器。測試結果和測試記錄將顯示在終端機中。
dotnet test
請參閱我們的執行和偵錯測試文件,了解更多關於在有頭模式下執行測試、執行多個測試、執行特定組態等。
系統需求
- Playwright 以 .NET Standard 2.0 程式庫分發。我們建議使用 .NET 8。
- Windows 11+、Windows Server 2019+ 或適用於 Linux 的 Windows 子系統(WSL)。
- macOS 14 Ventura 或更新版本。
- Debian 12、Debian 13、Ubuntu 22.04、Ubuntu 24.04,在 x86-64 和 arm64 架構上。