用啥Selenium?! .NET程序员就用自家的Playwright for .NET
提到用于Web應用程序自動化測試的工具,大家肯定第一個想到的就是Selenium。可以說,Selenium已經成為以編程方式自動化瀏覽器的事實標準。但是,Selenium作為老牌工具,也存在一些缺點,比如不支持Shadow DOM ,而這在現代網頁程序中非常常見。
這就給新一代瀏覽器自動化工具的發展提供了機會。比如下面我們要介紹的Playwright for .NET。
Playwright for .NET
Playwright 是微軟開源的一個基于 Node.js 的工具庫,可使用相同的API調用Chromium(Google-Chrome、Microsoft-Edge)、WebKit(Apple-Safari)和Mozilla-Firefox瀏覽器自動執行任務。
而Playwright for .NET(https://github.com/microsoft/playwright-dotnet)是Playwright的官方.NET移植,擁有原始庫中的所有功能,可以在.NET中使用。
功能一瞥
首先,執行下面命令,安裝全局工具:
dotnet?tool?install?--global?Microsoft.Playwright.CLI我們創建一個NUnit測試項目,然后在項目目錄下執行下面命令,引用“Microsoft.Playwright” Nuget包:
dotnet?add?package?Microsoft.Playwright dotnet?build playwright?install最后一個命令會調用之前安裝的全局工具,安裝Playwright工作所需的瀏覽器。
我們測試執行百度高級搜索的操作,編寫測試代碼如下:
using?Microsoft.Playwright; using?NUnit.Framework; using?System.Threading.Tasks;namespace?TestProject1 {public?class?Tests{[Test]public?async?Task?BaiduSearch(){using?var?playwright?=?await?Playwright.CreateAsync();await?using?var?browser?=?await?playwright.Chromium.LaunchAsync(new()?{?Headless?=?true?});var?page?=?await?browser.NewPageAsync();await?page.GotoAsync("https://www.baidu.com/");await?page.WaitForSelectorAsync("#s-usersetting-top");//?鼠標懸停在設置按鈕,彈出菜單await?page.HoverAsync("#s-usersetting-top");//?點擊高級搜索鏈接,彈出高級搜索窗口await?page.ClickAsync("a[href='//www.baidu.com/gaoji/advanced.html']");//?輸入搜索關鍵字await?page.TypeAsync("input[name='q1']",?"\"My?IO\"");var?page1?=?await?page.RunAndWaitForPopupAsync(async?()?=>{//?點擊搜索await?page.ClickAsync(".advanced-search-btn");});//檢查文本框內容var?handle?=?await?page1.WaitForSelectorAsync("#kw");var?text?=?await?handle.GetAttributeAsync("value");Assert.AreEqual("\"My?IO\"",?text);}} }通過上面的示例,我們看到Playwright for .NET可以使用多種方式定位元素,還可以執行一些特殊操作,比如鼠標懸停。
高級功能
Playwright for .NET還有一個厲害的錄制功能,無需寫一行代碼,我們只需手動操作瀏覽器,它會錄制我們的操作,然后自動生成代碼腳本。
執行下面的命令啟動錄制:
playwright?codege?結論
有了Playwright for .NET,我們就可以創建支持所有現代Web瀏覽器的自動化測試了,大家趕快用起來吧!
歡迎關注我的個人公眾號”My IO“
總結
以上是生活随笔為你收集整理的用啥Selenium?! .NET程序员就用自家的Playwright for .NET的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NET问答: using 和 await
- 下一篇: ABP Framework 研习社经验总