在 Playwright 瀏覽器自動測試工具 中介紹了 Playwright 的優缺點,本篇接續上一篇使用 C# 來示範 Playwright 的基本操作
先建立一個 .NET Core 的 NUnit 測試專案
使用 NuGet 安裝 Microsoft.Playwright.NUnit 套件
註: 請先檢查 Microsoft.NET.Test.Sdk 套件的版本,需要先升級到 17.1.0 以上,不然套件安裝後會出現問題無法執行。
直接執行程式,或是使用下列指令構建專案,使其產生 bin 資料夾和檔案
註: 安裝大約需要 3 分鐘,等安裝完成才會一次出現訊息。
輸入下列指令安裝 (需要切換到和專案同名的目錄下),若 .NET SDK 不是 6.0,則需要修改指令中的版本號為自己的版號
小技巧: 指令視窗中的路徑加上 \bin\Debug\net6.0 應該要有 playwright.ps1 檔案,如果沒有的話可以嘗試重新安裝 NuGet 的 Playwright 套件和重新 build 一次。
隨便寫個測試案例:
執行「在 Github 上搜尋 Playwright」這個動作
啟動錄製模式後點選 Recard 後即可錄製一同開啟的瀏覽器裡面的動作,並產生對應語言的程式碼
註: 如果是使用 Linux 或是 macOS 則斜線要替換為 /
註: 目前測試會在背景執行,不會出現「瀏覽器自動執行」的畫面,如果想要看到瀏覽器自動操作,請使用下面的進階測試
使用測試模式執行測試:
用法:(一次執行兩行)
註: 上面的方式適用 Windows,如果是 macOS 請使用:
指定瀏覽器:
可用參數: chromium, webkit, firefox
執行測試指令:
也可以直接指定測試名稱,不過在多個檔案中有同名的,就會都執行
參考資料:
Playwright .NET Docs
先建立一個 .NET Core 的 NUnit 測試專案
使用 NuGet 安裝 Microsoft.Playwright.NUnit 套件
dotnet add package Microsoft.Playwright.NUnit --version 1.24.0
註: 請先檢查 Microsoft.NET.Test.Sdk 套件的版本,需要先升級到 17.1.0 以上,不然套件安裝後會出現問題無法執行。
直接執行程式,或是使用下列指令構建專案,使其產生 bin 資料夾和檔案
dotnet build
安裝瀏覽器工具
安裝會用到 dotnet tool,先使用下列指令安裝 dotnet tool (已安裝的可以跳過)
dotnet tool update --global PowerShell
註: 安裝大約需要 3 分鐘,等安裝完成才會一次出現訊息。
輸入下列指令安裝 (需要切換到和專案同名的目錄下),若 .NET SDK 不是 6.0,則需要修改指令中的版本號為自己的版號
pwsh .\bin\Debug\net6.0\playwright.ps1 install
小技巧: 指令視窗中的路徑加上 \bin\Debug\net6.0 應該要有 playwright.ps1 檔案,如果沒有的話可以嘗試重新安裝 NuGet 的 Playwright 套件和重新 build 一次。
隨便寫個測試案例:
執行「在 Github 上搜尋 Playwright」這個動作
using System.Text.RegularExpressions;
using Microsoft.Playwright.NUnit;
namespace RuyutTestProject
{
public class Tests : PageTest
{
[Test]
public async Task Test1()
{
// Open new page
// Go to https://github.com/
await Page.GotoAsync("https://github.com/");
// Click [placeholder="Search GitHub"]
await Page.Locator("[placeholder=\"Search GitHub\"]").ClickAsync();
// Fill [placeholder="Search GitHub"]
await Page.Locator("[placeholder=\"Search GitHub\"]").FillAsync("playwright");
// Press Enter
await Page.Locator("[placeholder=\"Search GitHub\"]").PressAsync("Enter");
await Expect(Page).ToHaveURLAsync(new Regex(@"\?q=playwright"));
}
}
}
錄製模式(測試產生器)
使用錄製模式開啟 github.com
pwsh bin\Debug\net6.0\playwright.ps1 codegen github.com
啟動錄製模式後點選 Recard 後即可錄製一同開啟的瀏覽器裡面的動作,並產生對應語言的程式碼
註: 如果是使用 Linux 或是 macOS 則斜線要替換為 /
執行測試
dotnet test
註: 目前測試會在背景執行,不會出現「瀏覽器自動執行」的畫面,如果想要看到瀏覽器自動操作,請使用下面的進階測試
進階測試
可以使用 $env 在執行測試時附加參數使用測試模式執行測試:
- 瀏覽器包含頭部(網址列、功能列)
- 預設超時設置為 0(不會 timeout)
- 可以逐步偵錯
$env:PWDEBUG=1
用法:(一次執行兩行)
$env:PWDEBUG=1
dotnet test
註: 上面的方式適用 Windows,如果是 macOS 請使用:
export PWDEBUG=1
dotnet test
指定瀏覽器:
可用參數: chromium, webkit, firefox
$env:BROWSER="firefox"
dotnet test
使用設定檔執行測試
每次都要下一堆參數很不方便,那我們可以把設定值寫到檔案內,然後執行測試時帶入設定檔參數即可,以下是使用 Edge 瀏覽器進行測試的設定檔,檔名為 edge.runsettings
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<TestRunParameters>
<Parameter name="browser" value="chromium" />
<Parameter name="channel" value="msedge" />
</TestRunParameters>
</RunSettings>
執行測試指令:
dotnet test --settings:edge.runsettings
只執行單個測試
只執行某個測試,例如 UserTest 類別中的 LogoutTest 測試:
dotnet test --filter "UserTest.LogoutTest"
也可以直接指定測試名稱,不過在多個檔案中有同名的,就會都執行
dotnet test --filter "LogoutTest"
參考資料:
Playwright .NET Docs
留言
張貼留言
如果有任何問題、建議、想說的話或文章題目推薦,都歡迎留言或來信: a@ruyut.com