1、Playwright介紹
Playwright
是一個(gè)由Microsoft
開發(fā)的開源自動(dòng)化測試工具,它可以用于測試Web應(yīng)用程序。Playwright支持多種瀏覽器,包括Chrome、Firefox和WebKit,同時(shí)也支持多種編程語言,如JavaScript、TypeScript、Python和C#。
2、特點(diǎn)、使用場景
Playwright具有以下特點(diǎn):
- 支持所有主流瀏覽器
- 跨平臺:Windows、Linux 和macOS
- 可用于模擬移動(dòng)端WEB應(yīng)用的測試。
- 支持無頭模式(默認(rèn))和有頭模式
使用場景包括但不限于:
- 自動(dòng)化測試:開發(fā)人員和測試人員可以使用Playwright來編寫自動(dòng)化測試腳本,驗(yàn)證Web應(yīng)用程序的功能和性能。
- 性能測試:Playwright可以模擬多個(gè)用戶同時(shí)訪問Web應(yīng)用程序,幫助測試應(yīng)用程序在高負(fù)載情況下的性能表現(xiàn)。
- 可訪問性測試:Playwright可以模擬用戶使用輔助技術(shù)(如屏幕閱讀器)訪問Web應(yīng)用程序,幫助測試應(yīng)用程序的可訪問性。
- 網(wǎng)頁截圖和錄制:Playwright可以生成網(wǎng)頁截圖,也可以錄制用戶操作過程,幫助開發(fā)人員和測試人員分析問題。
總之,Playwright可以用于各種Web應(yīng)用程序測試場景,幫助團(tuán)隊(duì)提高測試效率和測試覆蓋率。
3、架構(gòu)原理
playwright共由三部分組成:
[圖片上傳失敗...(image-d09f0e-1711502634442)]
client:在客戶端是我們用不同的編程語言編寫的代碼,如JavaScript,Java,Python,C#等。
server:Playwright的server通過nodejs構(gòu)建并負(fù)責(zé)與client 以及不同的 Web 瀏覽器引擎進(jìn)行通信。
通信協(xié)議:client通過WebSocket 協(xié)議與Playwright server 通信;
Playwright使用 Chrome DevTools 協(xié)議(CDP)與 Chromium 通信。觸發(fā)測試后,client端代碼將被轉(zhuǎn)換為JSON格式,然后使用websocket協(xié)議發(fā)送到服務(wù)器。palywright通過單個(gè) websocket 協(xié)議連接傳達(dá)所有請求,該連接將保持不變,直到所有測試執(zhí)行完成。由于命令是在單個(gè)連接上發(fā)送的,因此測試失敗或不穩(wěn)定的可能性較小,并且命令可以快速執(zhí)行。這種架構(gòu)與Selenium相反,Selenium使用HTTP連接協(xié)議,并將每個(gè)命令(如瀏覽器打開,單擊,關(guān)閉瀏覽器)作為單獨(dú)的HTTP請求發(fā)送。此外,在Selenium中,服務(wù)器和客戶端之間的連接將在每次請求后終止,并為下一個(gè)請求重新建立。這也是Playwright為什么比selenium快的原因!
4、環(huán)境安裝
Playwright環(huán)境部署簡單,不像Selenium那樣需要下載瀏覽器對應(yīng)版本的驅(qū)動(dòng)程序chromedriver,直接安裝即可:
# 1、安裝 playwright:
pip3 install playwright
# 2、安裝所需的瀏覽器 chromium,firefox 和 webkit:
playwright install
# 3、如何只安裝特定的瀏覽器,比如Chrome:
playwright install chromium
如果您在使用 pip3 install playwright
安裝 Playwright 時(shí)遇到下載速度緩慢的問題,可以嘗試以下方法來加速下載:
更換 pip 鏡像源
可以使用國內(nèi)的 pip 鏡像源來替代默認(rèn)的源,例如使用阿里云的 pip 鏡像源或者清華大學(xué)的鏡像源等。可以使用以下命令來更換 pip 鏡像源:
pip3 config set global.index-url https://mirrors.aliyun.com/pypi/simple/
5、快速開始
Playwright 支持2種運(yùn)行方式: 同步
和異步
。
# 異步代碼
from time import sleep
from playwright.async_api import async_playwright
async def main():
async with async_playwright() as driver:
browser=await driver.firefox.launch(headless=False)
page=await browser.new_page()
await page.goto('https://www.example.com')
print(await page.title())
await browser.close()
sleep(10)
asyncio.run(main())
# 同步執(zhí)行代碼
from playwright.sync_api import sync_playwright
with sync_playwright() as driver:
browser=driver.chromium.launch(headless=False)
page=browser.new_page()
page.goto('https://www.example.com')
print(page.title())
sleep(10)
browser.close()
6、代碼自動(dòng)生成
Playwright自帶了一個(gè)代碼生成器工具,可以幫助你快速生成Playwright自動(dòng)化測試腳本。通過代碼生成器,你可以在瀏覽器中進(jìn)行交互式操作,然后自動(dòng)生成相應(yīng)的Playwright代碼。
使用Playwright代碼生成器的基本步驟:
- 打開Playwright代碼生成器網(wǎng)站:https://playwright.dev/docs/codegen/
或者通過命令行執(zhí)行:
playwright codegen https://playwright.dev
在網(wǎng)頁中,你可以選擇要使用的編程語言(如JavaScript、Python、TypeScript),以及要測試的目標(biāo)網(wǎng)站。
點(diǎn)擊“Start recording”按鈕,然后在彈出的瀏覽器窗口中進(jìn)行交互式操作,如點(diǎn)擊按鈕、填寫表單等。
完成交互式操作后,點(diǎn)擊“Stop recording”按鈕。
在頁面中將生成的代碼顯示出來,你可以復(fù)制并粘貼到你的項(xiàng)目中使用。
通過使用代碼生成器,你可以節(jié)省大量時(shí)間,特別是對于那些不熟悉Playwright API的開發(fā)人員來說,這是一個(gè)非常有用的工具。生成的代碼可以作為起點(diǎn),然后根據(jù)需要進(jìn)行修改和擴(kuò)展。
7、追蹤查看器
在Playwright中,追蹤查看器(Trace Viewer)是一個(gè)非常有用的工具,可以幫助你分析和調(diào)試自動(dòng)化測試過程中的性能問題和其他關(guān)鍵信息。通過追蹤查看器,你可以查看詳細(xì)的性能數(shù)據(jù)、網(wǎng)絡(luò)請求、頁面事件等,以便更好地了解自動(dòng)化測試的執(zhí)行過程。
以下是使用追蹤查看器的基本步驟:
1、啟用追蹤:
在Playwright的代碼中,你可以通過調(diào)用start_tracing方法來啟用追蹤功能。例如:
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch()
context = browser.new_context()
page = context.new_page()
trace_path = 'trace.json'
page.start_tracing(path=trace_path)
page.goto('https://www.example.com')
page.click('button#submit')
page.wait_for_navigation()
page.stop_tracing()
context.close()
browser.close()
2、保存追蹤數(shù)據(jù):
在代碼中指定追蹤數(shù)據(jù)保存的路徑,如上例中的trace_path = 'trace.json'。
3、打開追蹤查看器:
在瀏覽器中,打開Playwright追蹤查看器網(wǎng)站:https://playwright.dev/docs/trace-viewer/
4、加載追蹤數(shù)據(jù):
在追蹤查看器網(wǎng)站中,點(diǎn)擊“Load”按鈕,然后選擇你保存的追蹤數(shù)據(jù)文件(如trace.json)。
5、分析追蹤數(shù)據(jù):
一旦加載了追蹤數(shù)據(jù),你就可以在追蹤查看器中查看各種性能指標(biāo)、網(wǎng)絡(luò)請求、頁面事件等信息。你可以使用追蹤查看器的各種功能和過濾器來深入分析自動(dòng)化測試的執(zhí)行過程,找出潛在的性能問題和優(yōu)化空間。
官網(wǎng):
https://playwright.dev/
更多特性可參考項(xiàng)目地址: https://github.com/microsoft/playwright