?
前言
?? ?隨著近年來對UI自動化測試的要求越來越高,,功能強大的測試框架也不斷的涌現。本系列主講的Playwright作為一款新興的端到端測試框架,憑借其獨特優勢,正在逐漸成為測試工程師的熱門選擇。
本系列文章將著重通過示例講解
-
Playwright + python開發環境的搭建????
-
定位方式(重點)
-
Playwright 的重要API(重點)
-
Playwright 的 其他重要特性
-
Playwright +?Python 自動化框架的搭建 (重點)
希望搭建能通過本系列文章的學習,能通過 Playwright +Python 搭建實用的框架解決工作中的實際問題。
1. Playwright 簡介
1.1?Playwright 是什么
? ? ?Playwright 是一個用于瀏覽器自動化和跨瀏覽器測試的開源工具,由 Microsoft Edge 團隊開發。它允許開發者編寫代碼來模擬用戶在不同瀏覽器中的交互,執行頁面操作,處理網絡請求,截取屏幕截圖,生成 PDF 等,從而有效地進行自動化測試和性能測試。
1.2?為什么要學Playwright
-
由于Selenium在3.x和4.x兩個版本的迭代中并沒有發生多大的變化,因此Selenium一統天下的地位可能因新框架的出現而變得不那么穩固。
-
后續的Cypress、TestCafe、Puppeteer被譽為后Selenium時代Web UI自動化的三駕馬車。但是由于這三個框架都是基于JavaScript開發的,且都不支持Python,所以使用率并沒有很高。
-
Playwright?則是綜合了上述框架的優點,提供了很好的體驗,將來可能成為流行的趨勢。
1.3?playwright 的特點(優勢)
-
多瀏覽器支持:Playwright 支持 Chromium(包括 Chrome 和 Edge)、Firefox 和 WebKit(Safari),這使得您可以在不同瀏覽器中進行測試,確保您的應用在各個瀏覽器上都能正常工作。
-
速度與穩定性:Playwright被設計為高性能工具,它在執行頁面操作和網絡請求時非常快速。同時,它還具備穩定性,可以處理各種異步操作和復雜場景。
-
功能豐富:Playwright 提供了豐富的 API,可以模擬用戶的各種交互,如點擊、填寫表單、鍵盤輸入等。此外,它還支持錄制和回放操作,方便非開發人員使用。
-
并行測試:Playwright 允許在多個瀏覽器實例中并行運行測試,從而加快測試速度。
-
跨平臺:Playwright 可以在 Windows、macOS 和 Linux 等多個平臺上運行。
????ps:?上內容均來自官方文檔,想要了解更多關于Playwright?的知識,請參考其官方文檔
2.搭建python + Playwright開發環境
2.1
-
安裝python (版本必須 不小于Python3.7)
-
安裝Playwright?
pip?install?playwright
-
安裝內置瀏覽器
python?-m?playwright?install
-
驗證是否安裝成功, 只要顯示對應的版本號,即為安裝成功
playwright -V
---Version 1.35.0
2,2 . 入門實戰-腳本錄制
Playwright?自帶的 Playwright Inspector工具 可以像 selenium 和 QTP 一樣,錄制頁面動作,產生腳本,并且能幫您快捷的定位頁面元素。
在終端(或命令行窗口)輸入一下命令
playwright codegen
系統會打開一個瀏覽器,另外會打開一個 Playwright Inspector,如下圖所示?
在瀏覽器中的所有操作,都會在在 Playwright Inspector 實時的產生代碼,現在就以打開百度,并進行搜索為例,看下Playwright Inspector 所產生的代碼。
在瀏覽器中輸入百度網址, 并在搜索欄中輸入 米蘭, 再在Playwright Inspector 停止錄制(默認開啟的)?
來看下產生的代碼
rom playwright.sync_api import Playwright, sync_playwright, expect
def run(playwright: Playwright) -> None:
browser = playwright.chromium.launch(headless=False)
context = browser.new_context()
page = context.new_page()
????page.goto(百度網址)
page.locator("#kw").fill("米蘭")
page.get_by_role("button", name="百度一下").click()
# ---------------------
context.close()
browser.close()
with sync_playwright() as playwright:
run(playwright)
代碼分析
with sync_playwright() as playwright
這一行代碼表示用同步的方式生成一個playwright對象, 用?with ... as ...
?方式參考處理文件的方式, 可以省略?playwright.stop()
,上面的代碼 等同于
from playwright.sync_api import sync_playwright
playwright = sync_playwright().start()
...
...
playwright.stop()
run 函數中的代碼就比較明了了
# 啟動瀏覽器
browser = playwright.chromium.launch(headless=False)
# 打開一個新的頁面
context = browser.new_context()
page = context.new_page()
# 跳轉至 百度
page.goto("百度網址")
# 在搜索框 輸入 米蘭
page.locator("#kw").fill("米蘭")# 點擊 百度一下
page.get_by_role("button", name="百度一下").click()
可以看到,Playwright?的定位方式和 selenium 還是有很大的不同的,下一節就將開始介紹其豐富的定位方式!敬請期待!
作者微信,說明來意,不閑聊,不白嫖。
?