最近在研究部門的UI自動化架構(java+selenium+testNG+openCV等),發現在調試腳本時,需要先下載下傳谷歌浏覽器。無頭/有頭模式還需要代碼區分。還有一個體驗問題,程式啟動太慢,從運作到浏覽器啟動,差不多需要30s左右,等得有點着急。
在知乎/CSDN中找到多篇文章推薦自動化測試利器-Playwright
建立項目嘗試了下,啟動速度蠻快的。通讀官方api文檔後,發現無論是配置還是運作,優點都很多。下面我們來詳細地介紹下Playwright
一、什麼是 Playwright
微軟開源自動化測試工具Playwright, 支援主流浏覽器,包括 Chrome、FireFox、safari等主流浏覽器, 同時支援以無頭模式、有頭模式運作,并提供了同步、異步的API, 可以結合主流測試架構使用。支援浏覽器端的自動化腳本錄制等功能。
二、Playwright的特點
支援所有浏覽器#
在 Chromium、Firefox 和 WebKit 上進行測試. Playwright 擁有适用于所有現代浏覽器的完整 API,包括 Google Chrome 和 Microsoft Edge (基于 Chromium), Apple Safari (基于 WebKit) 和 Mozilla Firefox.
跨平台 WebKit 測試. 使用Playwright,使用适用于Windows、Linux和macOS的WebKit建構,測試您的應用程式在Apple Safari中的表現。在本地和CI上進行測試。
移動裝置測試. 借助 移動裝置模拟器(device emulation)的移動 Web 浏覽器中測試您的響應式 Web 應用程式
Headless and headed. Playwright 支援所有浏覽器和所有平台的 headless(無浏覽器 UI)和headed(浏覽器 UI)模式。Headed 非常适合調試,而 Headless 速度更快,适合 CI/雲執行。
快速可靠地執行#
自動等待API(Auto-wait APIs). Playwright 操作會 自動等待元素(auto-wait for elements) 準備就緒. 這提高了可靠性并簡化了測試腳本的編寫。
自動化無逾時(Timeout-free automation). Playwright 接收浏覽器信号, 如網絡請求、頁面導航和頁面加載事件, to eliminate the need for sleep timeouts that cause flakiness.
Lean parallelization with browser contexts. 為多個具有浏覽器上下文(browser contexts)的并行、隔離的執行環境重用單個浏覽器執行個體。.
靈活的元素選擇器. Playwright 可以依靠面向使用者的字元串,比如文本内容和可通路性标簽來 選擇元素(select elements), 這些字元串比DOM結構緊密耦合的選擇器更靈活。
強大的自動化能力#
多個域(Multiple),頁面(Pages)和架構 (frames). 是一個程序外自動化驅動程式,它不受頁面内JavaScript執行範圍的限制,可以使用多個多個頁面( multiple pages.)實作場景自動化.
強大的網絡控制. Playwright引入了context-wide network interception to stub and mock network requests.
Modern web features. Playwright supports web components through shadow-piercing selectors, geolocation, permissions, web workers and other modern web APIs.
覆寫所有場景的功能. 支援檔案下載下傳(file downloads)和上傳(uploads), 程序外 iframes, 本地 輸入事件(input events), 甚至是 dark mode.
安裝
我是在idea中新建立的項目,之後的操作都是在idea中
- File->new->project
2.New Project
需要填寫name , Build system選擇 Maven
3.pom.xml檔案中添加playwright的依賴
<dependencies>
<!-- https://mvnrepository.com/artifact/com.microsoft.playwright/playwright -->
<dependency>
<groupId>com.microsoft.playwright</groupId>
<artifactId>playwright</artifactId>
<version>1.28.0</version>
</dependency>
</dependencies>
這裡強烈建議version填寫為 1.31.0 在寫完1.28.0後,idea會一直詢問是否更新到1.31.0 更新包後再次運作代碼時,會重新下載下傳對應的浏覽器。其實浏覽器還是最新的,但是playwright更新後就會再次下載下傳浏覽器,不如一步到位。
4.Maven的配置
1.填寫Maven檔案夾位址
2.填寫 settings.xml檔案位址
3.填寫 respository檔案夾位址,可以和公司的區分開
Maven配置完後,是不是感覺和TestNG配置很像?對的,其實都是在pom.xml配置中添加依賴,然後通過MVN來下載下傳對應的包。
先clean 然後 compile
好了,所有的配置都完成了,是不是很簡單?
今天先到這裡,明天我們再寫代碼來啟動浏覽器