ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Playwright Python 入门指南:安装 pytest-playwright、配置浏览器与运行第一个 E2E 测试

Playwright Python 入门指南:安装 pytest-playwright、配置浏览器与运行第一个 E2E 测试 Playwright Python 入门指南安装 pytest-playwright、配置浏览器与运行第一个 E2E 测试【免费下载链接】playwrightPlaywright is a framework for Web Testing and Automation. It allows testing Chromium, Firefox and WebKit with a single API.项目地址: https://gitcode.com/GitHub_Trending/pl/playwright本文基于 Playwright 官方 Python 入门文档intro-python.md完整覆盖 Python 版 Playwright 的安装流程、系统要求、示例测试编写、运行与调试方法并结合 Pytest 插件参考文档与仓库源码补充了 fixture 体系、CLI 参数和浏览器二进制管理机制等源码级细节。读完后你可以独立完成一个 Python E2E 测试项目的环境搭建并跑通第一个测试。一、Playwright Python 生态概览Playwright 是专为端到端E2E测试设计的浏览器自动化框架单一 API 即可驱动三大现代渲染引擎Chromium、WebKit 和 Firefox支持在 Windows、Linux、macOS 上本地或 CI 环境运行支持 headless / headed 模式与原生移动端仿真。官方提供两种使用形态Playwright 库Library通用浏览器自动化工具提供同步sync_api与异步async_api两套 API详见 library-python.md。最简用法如下from playwright.sync_api import sync_playwright with sync_playwright() as p: browser p.chromium.launch() page browser.new_page() page.goto(https://playwright.dev) print(page.title()) browser.close()Playwright Pytest 插件编写 E2E 测试的推荐方式开箱即用提供上下文隔离context isolation和多浏览器配置矩阵能力。本文的正文主线即围绕该插件展开。二、安装 pytest-playwright官方推荐通过 pytest-playwright 插件编写 E2E 测试。按包管理器选择对应安装命令# Pip pip install pytest-playwright # Poetry poetry add pytest-playwright # uv uv add pytest-playwright安装 Python 包后还需下载浏览器二进制文件Chromium、Firefox、WebKit 默认全套playwright install浏览器二进制的管理机制每个 Playwright 版本都绑定特定版本的浏览器二进制。Playwright 的每次发布都会更新其支持的浏览器版本因此每次升级 Playwright 后可能需要重新执行playwright install。从仓库源码结构看支持安装的浏览器清单由 packages/playwright-core/browsers.json 描述CLI 据此确定要下载的浏览器与版本。常用相关命令详见 browsers.md# 只安装指定浏览器 playwright install webkit # 查看支持的浏览器 playwright install --help # 自动安装系统依赖适合 CI 环境 playwright install-deps # 或为单个浏览器安装依赖 playwright install-deps chromium三、系统要求Python 版 Playwright 的运行环境要求引自入门文档原文Python 3.8 或更高版本Windows 11、Windows Server 2019 或 WSLWindows Subsystem for LinuxmacOS 14Sonoma或更高版本Debian 12 / 13、Ubuntu 22.04 / 24.04 / 26.04x86-64 或 arm64。四、编写第一个示例测试在当前工作目录或其子目录中创建一个遵循test_前缀命名约定的文件如test_example.py并确保测试函数名同样以test_开头。入门文档给出的标准示例如下import re from playwright.sync_api import Page, expect def test_has_title(page: Page): page.goto(https://playwright.dev/) # Expect a title to contain a substring. expect(page).to_have_title(re.compile(Playwright)) def test_get_started_link(page: Page): page.goto(https://playwright.dev/) # Click the get started link. page.get_by_role(link, nameGet started).click() # Expects page to have a heading with the name of Installation. expect(page.get_by_role(heading, nameInstallation)).to_be_visible()要点解析结合 writing-tests-python.mdpage是 pytest-playwright 注入的 fixture无需手动创建expect(page).to_have_title(...)是 Web-first 断言支持正则匹配标题子串且断言是事件最终成立式的自动轮询无需手写 sleeppage.get_by_role(...)属于 Locator API可访问性角色定位执行click()前 Playwright 会自动等待元素可操作actionable消除大量竞态等待问题。五、运行示例测试与 CLI 参数默认情况下测试在 Chromium 上运行、以 headless 模式执行不打开浏览器窗口结果与日志直接输出到终端pytest常用运行方式详见 running-tests-python.md# 有头模式运行期间打开真实浏览器窗口 pytest --headed # 指定浏览器可多次指定以运行多个 pytest --browser webkit pytest --browser webkit --browser firefox # 运行单个/多个测试文件 pytest test_login.py pytest tests/test_todo_page.py tests/test_landing_page.py # 按名称运行单个测试 pytest -k test_add_a_todo_item # 并行执行需先安装 pytest-xdist推荐设为逻辑核心数的一半 pip install pytest-xdist pytest --numprocesses 2调试方面Playwright 自带 Inspector可逐步单步执行 API 调用、查看调试日志并挑选 locator# Linux / macOS PWDEBUG1 pytest -s # 调试所有测试 PWDEBUG1 pytest -s test_example.py PWDEBUG1 pytest -s -k test_get_started_link # Windows set PWDEBUG1 pytest -s六、Pytest 插件深度CLI 参数与 Fixtures以下内容来自 Pytest 插件参考文档 test-runners-python.md是入门文档多浏览器配置开箱即用能力的完整清单。6.1 CLI 参数全表| 参数 | 说明 | 默认值 | | :- | :- | :- | |--headed| 以有头模式运行测试 | headless | |--browser| 指定浏览器chromium/firefox/webkit可多次指定 |chromium| |--browser-channel| 使用指定浏览器通道如chrome、msedge | 无 | |--slowmo| 放慢操作毫秒便于观察执行过程 | 0 | |--device| 仿真设备如--deviceiPhone 11 Pro | 无 | |--output| 测试产物截图、视频等输出目录 |test-results| |--tracing| 是否记录 traceon/off/retain-on-failure|off| |--video| 是否录制视频on/off/retain-on-failure|off| |--screenshot| 每个测试后自动截图on/off/only-on-failure|off| |--full-page-screenshot| 失败时截取整页需启用--screenshot |off|注意CLI 参数只作用于默认的browser、context和pagefixtures。若你通过 API 调用如browser.new_context()自行创建浏览器/上下文这些参数不会生效。CLI 参数可通过pytest.ini固化为默认值# content of pytest.ini [pytest] # Run firefox with UI addopts --headed --browser firefox6.2 Fixtures 体系函数级function scope——测试开始创建、测试结束销毁context为该测试创建的全新 browser contextpage为该测试创建的全新 browser pagenew_context函数式回调可创建额外 context适用于多用户场景。会话级session scope——全部测试结束后才销毁playwrightPlaywright 实例browser_type当前浏览器的 BrowserTypebrowser由 Playwright 启动的浏览器实例browser_name/browser_channel浏览器名称与通道的字符串is_chromium/is_webkit/is_firefox各浏览器类型的布尔标识。自定义 fixture 选项browser_type_launch_args覆盖BrowserType.launch参数、browser_context_args覆盖Browser.newContext参数返回 Dict、connect_options通过 WebSocket 端点连接已有浏览器。也可用 marker 对单个测试覆盖上下文参数import pytest pytest.mark.browser_context_args(timezone_idEurope/Berlin, localeen-GB) def test_browser_context_args(page): assert page.evaluate(window.navigator.languages) [de-DE]6.3 实用模式速查多用户场景用new_context创建第二个 context 模拟并行用户按浏览器跳过/限定pytest.mark.skip_browser(firefox)、pytest.mark.only_browser(chromium)自定义视口/HTTPS 忽略/设备仿真在conftest.py中重写browser_context_argsfixture例如注入{viewport: {width: 1920, height: 1080}}或playwright.devices[iPhone 11 Pro]base-urlpytest --base-url http://localhost:8080后page.goto(/admin)自动解析为完整 URL断点调试在测试代码中直接写breakpoint()进入 pdb。七、更新 Playwright升级至最新版本时两个 Python 包pytest-playwright与playwright需同时更新并按包管理器选择命令# Pip pip install pytest-playwright playwright -U # Poetry poetry update pytest-playwright playwright # uv uv add --upgrade pytest-playwright playwright升级后请重新执行playwright install以匹配新版本绑定的浏览器二进制原因见第二节浏览器二进制的管理机制。八、Python 使用注意事项来自 library-python.md 的已知问题写 Python 测试前应了解不要用time.sleep()等待Playwright 内部依赖异步事件循环time.sleep()会阻塞事件处理导致状态过期应改用page.wait_for_timeout(5000)或优先依赖自动等待auto-waitingWindows 事件循环限制Playwright 在子进程中运行 driverWindows 上要求ProactorEventLoop与SelectorEventLoop不兼容Playwright 在旧版本 Python 上会自动设置默认事件循环API 非线程安全多线程环境下应为每个线程创建独立的 Playwright 实例取消 asyncio 任务直接取消正在执行 Playwright 调用的任务行为未定义需要让操作存活于调用方之外时应将其放入独立任务并用asyncio.shield()保护。九、下一步入门文档给出的后续学习路径均已转换为仓库内路径使用 Web-first 断言、page fixture 与 locators 编写测试writing-tests-python.md运行单个/多个测试、有头模式running-tests-python.md使用 Codegen 生成测试codegen.md查看测试 tracetrace-viewer-intro-java-python.md。至此从pip install pytest-playwright到pytest跑通第一个 E2E 测试的完整闭环已经打通结合第六节的 CLI 参数与 fixtures 体系即可扩展到多浏览器矩阵、设备仿真与 trace 产物分析等生产级用法。【免费下载链接】playwrightPlaywright is a framework for Web Testing and Automation. It allows testing Chromium, Firefox and WebKit with a single API.项目地址: https://gitcode.com/GitHub_Trending/pl/playwright创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表