Skip to main content

安裝

簡介

Playwright 是專為滿足端到端測試需求而建立的。Playwright 支援所有現代渲染引擎,包括 Chromium、WebKit 和 Firefox。在 Windows、Linux 和 macOS 上進行測試,可以是本地或 CI 上,無頭或有頭,並具有原生行動模擬功能。

你可以選擇使用 MSTest base classesNUnit base classes 來撰寫端到端測試,這些是 Playwright 提供的。這些類別支援在多個瀏覽器引擎上執行測試、平行處理測試、調整啟動/上下文選項,並在每個測試中自動獲取 Page/BrowserContext 實例。或者,你可以使用 函式庫 手動撰寫測試基礎設施。

  1. 開始建立一個新專案,使用 dotnet new。這將建立 PlaywrightTests 目錄,其中包含一個 UnitTest1.cs 檔案:
dotnet new mstest -n PlaywrightTests
cd PlaywrightTests
  1. 安裝必要的 Playwright 相依套件:
dotnet add package Microsoft.Playwright.MSTest
  1. 建構專案,使 playwright.ps1 可用於 bin 目錄內:
dotnet build
  1. 安裝所需的瀏覽器。此範例使用 net8.0,如果您使用不同版本的 .NET,您需要調整命令並將 net8.0 更改為您的版本。
pwsh bin/Debug/net8.0/playwright.ps1 install

如果 pwsh 不可用,你將需要安裝 PowerShell

添加範例測試

編輯 UnitTest1.cs 文件,使用以下程式碼來建立一個範例端到端測試:

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");

// Expect a title "to contain" a substring.
await Expect(Page).ToHaveTitleAsync(new Regex("Playwright"));
}

[TestMethod]
public async Task GetStartedLink()
{
await Page.GotoAsync("https://playwright.dev");

// Click the get started link.
await Page.GetByRole(AriaRole.Link, new() { Name = "Get started" }).ClickAsync();

// Expects page to have a heading with the name of Installation.
await Expect(Page.GetByRole(AriaRole.Heading, new() { Name = "Installation" })).ToBeVisibleAsync();
}
}

執行範例測試

預設情況下,測試將在 Chromium 上執行。這可以通過 BROWSER 環境變數進行配置,或通過調整 launch configuration options 來實現。測試在無頭模式下執行,這意味著在執行測試時不會打開瀏覽器。測試結果和測試日誌將顯示在終端中。

dotnet test

請參閱我們的執行和除錯測試文件,以了解更多關於在有頭模式下執行測試、執行多個測試、執行特定配置等資訊。

系統需求

  • Playwright 以 .NET Standard 2.0 函式庫發佈。我們推薦 .NET 8。
  • Windows 10+、Windows Server 2016+ 或 Windows Subsystem for Linux (WSL)。
  • macOS 13 Ventura 或 macOS 14 Sonoma。
  • Debian 11、Debian 12、Ubuntu 20.04 或 Ubuntu 22.04、Ubuntu 24.04,在 x86-64 和 arm64 架構上。

接下來是什麼