引言
随着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 可以方便地管理测试环境的初始化和清理工作。这样,我们就能够专注于测试逻辑本身,而不是测试环境的搭建。