利用 Playwright 提供的 API,我們在瀏覽器上做的很多事情都可以自動化。例如,搜索數據、填寫表單和下載文件等等。
但最適合的工作,就是自動化測試 Web 應用程序。
自動化測試
測試是軟件開發中的一項基本任務,至少,你需要運行應用程序以查看它是否按預期工作。
但是要真正測試一個功能是否正常,需要要覆蓋盡可能多的場景。例如,填寫一個表單,你就必須要驗證如下常見的場景:
完全正確的數據
錯誤的數據類型,比如數字框輸入了字母
錯誤的數據范圍,比如年齡輸入了1000
必填字段為空
雖然可以用純手工進行測試。但是有經驗的開發人員會基于這些場景編寫測試代碼,并且可以自動化運行這些測試代碼,保證不會遺漏任何場景或必須重復執行相同的測試。
而測試 Web 應用程序需要使用瀏覽器,這正給了 Playwright 以用武之地。
測試框架
雖然 Playwright for .NET 不依賴于特定的測試運行程序或測試框架就可運行,但是利用測試框架可以幫助我們更好地編寫自動化測試。
.NET 下的測試框架有很多。但是官方推薦使用 NUnit 作為測試框架。你也可以嘗試使用其他你熟悉的測試框架。
Demo
下面我們將將使用站點 https://www.baidu.com 作為測試用例,測試頁面標題是否為“百度一下,你就知道”。
在命令行窗口,使用 dotnet CLI 創建一個 NUnit 測試項目,并添加 Playwright 依賴:
dotnet?new?nunit?-n?HelloPlaywright_04
cd?HelloPlaywright_04dotnet?add?package?Microsoft.Playwright.NUnit
修改 UnitTest1.cs 代碼如下:
using?Microsoft.Playwright.NUnit;
using?NUnit.Framework;
using?System.Threading.Tasks;namespace?HelloPlaywright_04
{public?class?Tests?:?PageTest{[Test]public?async?Task?Title_IsCorrect(){var?result?=?await?Page.TitleAsync();Assert.AreEqual("百度一下,你就知道",?result);}}
}
運行測試,失敗:
但是這是對的,因為我們還沒有初始化環境:
namespace?HelloPlaywright_04
{public?class?Tests?:?PageTest{[SetUp]public?async?Task?SetUp(){await?Page.GotoAsync("https://www.baidu.com");}...}
}
運行測試,成功:
結論
Microsoft.Playwright.NUnit 提供了多個基類用于創建不同級別下的測試:
類名 | 說明 |
---|---|
PageTest | 每個測試都會獲得在其自己獨有的 BrowserContext 中創建的網頁的新副本。擴展此類是編寫全功能 Playwright 測試的最簡單方法。 |
ContextTest | 每個測試都會得到一個 BrowserContext 的新副本。你可以根據需要在此上下文中創建任意數量的頁面。使用此測試是測試需要多個選項卡的多頁場景的最簡單方法。 |
BrowserTest | 每個測試都將獲得一個瀏覽器,并且可以創建任意數量的上下文。每個測試負責清理它創建的所有上下文。 |
PlaywrightTest | 為每個測試提供了一個 Playwright 對象,以便測試可以啟動和停止任意數量的瀏覽器。 |
添加微信號【MyIO666】,邀你加入技術交流群