Playwright 是一个强大的现代开源自动化库,专门为端到端测试而设计。它由微软的团队开发并维护,支持使用单一 API 来操控多种浏览器。

Playwright 之所以迅速流行,是因为它解决了许多传统自动化工具(如 Selenium)的痛点。

  1. 跨浏览器支持

    • 支持所有现代浏览器引擎:Chromium(Chrome, Edge)、FirefoxWebKit(Safari)。

    • 这意味着你可以在 Windows 上测试 Safari,确保了跨平台的一致性。

  2. 跨平台、多语言

    • 平台: 支持 Windows, macOS, Linux(包括在 Docker 容器中)。

    • 语言: 提供对 TypeScript/JavaScriptPython.NET (C#)Java 的一流支持,API 在不同语言间保持一致。

  3. 强大的自动化能力

    • 自动等待: Playwright 在执行操作前会自动等待元素可用的状态(如可点击、可见),无需手动添加 sleep 或复杂等待,大大提高了测试的稳定性和编写效率。

    • 网络拦截: 可以轻松地模拟和修改网络请求,例如拦截 API 调用、模拟慢速网络或离线状态。

    • 多标签页、多上下文: 能够处理多个浏览器标签页、甚至无痕浏览器上下文,这对于测试多用户场景或单点登录非常有用。

    • 文件下载与上传: 原生支持文件上传和下载操作的自动化。

    • Shadow DOM 支持: 对 Web Components 中的 Shadow DOM 有很好的支持,可以直接定位其中的元素。

  4. 速度快、可靠性高

    • 无头模式: 默认在无头模式下运行,速度极快。

    • 浏览器上下文: 通过创建独立的浏览器上下文,可以实现并行测试,且彼此隔离,互不干扰。

    • 追踪与调试: 内置强大的工具,可以记录测试执行过程的视频、截图和操作日志,方便调试失败的测试。

  5. 现代化的测试框架集成

    • 可以轻松与流行的测试运行器集成,如 JestMochaPlaywright Test(其自带的、功能丰富的测试运行器)、Pytest 等。

相关网址:

安装

pip install playwright

使用如下命令来安装playwright所需的引擎

playwright install

QuickStart

在我们的第一个脚本中,我们将导航到 https://playwright.nodejs.cn/ 并在 WebKit 中截取屏幕截图。你可以使用 Python 脚本运行 import Playwright,并启动 3 个浏览器(chromiumfirefoxwebkit)中的任意一个。

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch()
    page = browser.new_page()
    page.goto("http://www.baidu.com")
    page.screenshot(path="./example.png")
    browser.close()

默认情况下,Playwright 以无头模式运行浏览器。要查看浏览器 UI,请将 headless 选项设置为 False。你还可以使用 slow_mo 来减慢执行速度。在调试工具 section 中了解更多信息。

chromium.launch(headless=False, slow_mo=50)

Playwright 支持两种 API 变体:同步和异步。如果你的现代项目使用 asyncio,则应该使用异步 API:

import asyncio
from playwright.async_api import async_playwright

async def main():
    async with async_playwright() as p:
        browser = await p.chromium.launch()
        page = await browser.new_page()
        await page.goto("http://www.baidu.com")
        print(await page.title())
        await browser.close()

asyncio.run(main())

文章作者: Vsoapmac
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 soap的会员制餐厅
python 自动化测试 第三方库
喜欢就支持一下吧