引言
隨著Web應用的日益復雜化,自動化測試成為了確保軟件質量的關鍵環節。Playwright 是一個強大的自動化庫,它支持在 Chromium、Firefox 和 WebKit 中運行自動化腳本。本文將介紹如何使用 Playwright 的 Python 同步 API 來簡化點擊和填充操作,并展示如何在 pytest 測試框架中應用這些方法。
Playwright 簡介
Playwright 允許開發者自動化幾乎所有的網頁操作,包括但不限于點擊、填寫表單、導航等。它支持跨瀏覽器測試,并且能夠處理單頁應用(SPA)中的動態內容。
環境準備
在開始之前,請確保你已經安裝了 Python 和 pip。
安裝 Playwright
pip install playwright
安裝內置瀏覽器
playwright install
編寫 PlaywrightWrapper 類
為了簡化 Playwright 的使用,我們可以編寫一個封裝類 PlaywrightWrapper
。這個類將提供啟動瀏覽器、打開新頁面、導航、定位元素、點擊和填充表單的方法。
# wrapper.py
from playwright.sync_api import sync_playwrightclass PlaywrightWrapper:def __init__(self):self.playwright = sync_playwright().start()self.browser = Noneself.page = Nonedef launch_browser(self, browser_type="chromium", headless=False):self.browser = self.playwright[browser_type].launch(headless=headless)return selfdef new_page(self):self.page = self.browser.new_page()return selfdef navigate(self, url: str):self.page.goto(url)return selfdef locator(self, selector: str):return self.page.locator(selector)def click(self, selector: str):self.locator(selector).click()return selfdef fill(self, selector: str, value: str):self.locator(selector).fill(value)return selfdef close(self):if self.browser:self.browser.close()self.playwright.stop()return self
使用 pytest 進行測試
現在我們已經有了 PlaywrightWrapper
類,接下來我們將展示如何在 pytest 測試框架中使用它。
首先,pytest fixture 來初始化、打開頁面和關閉自動化環境:
# conftest.py
import pytest
from common.wrapper import PlaywrightWrapper# 定義page fixture
@pytest.fixture(scope="session")
def page():page = PlaywrightWrapper()yield pagepage.close()# 打開頁面fixture
@pytest.fixture(scope="session", autouse=True)
def open_page(page):page.launch_browser().new_page().navigate("https://www.baidu.com/")
然后,編寫測試用例:
# test_case.py
def test_case(page):page.fill("input#kw", "CSDN blues_C").click("[type='submit']").click("a >> text='blues_C' >> nth=0").wait_for_timeout(20)
最后,運行測試:
pytest .\test_case.py
結語
通過封裝 Playwright 的操作,我們能夠編寫出更簡潔、更一致的自動化測試腳本。使用 pytest fixture 可以方便地管理測試環境的初始化和清理工作。這樣,我們就能夠專注于測試邏輯本身,而不是測試環境的搭建。