Playwright Python:高效自动化测试的得力助手

摘要

本文将深入剖析 Playwright Python 的安装、使用、更新以及登录相关功能的实现细节,旨在帮助开发者快速掌握这一强大的浏览器自动化工具,提高测试效率和质量。

一、初识 Playwright Python

Playwright 是一款功能强大的浏览器自动化工具,支持 Chromium、WebKit 和 Firefox 等现代浏览器。它能够在 Windows、Linux 和 macOS 上运行,兼容无头(无界面)和有头(有界面)模式,广泛应用于自动化测试和爬虫开发等领域。

二、Playwright Python 的安装

安装 Playwright Python 的过程十分简便。首先,你需要安装 Pytest 插件。可使用 pip 安装,命令为:

pip install pytest-playwright

也可通过 Anaconda 安装,命令是:

conda install -c conda-forge pytest-playwright

插件安装完成后,会自动安装支持的浏览器,包括 Chromium、Firefox 和 WebKit。若需手动安装浏览器,可以运行以下命令:

playwright install

三、编写与运行测试代码

在编写测试代码前,需先创建一个以 “test_” 开头的文件,例如 “test_example.py”。以下是一个简单的测试代码示例:

from playwright.sync_api import sync_playwright

def test_example():
    with sync_playwright() as p:
        browser = p.chromium.launch()
        page = browser.new_page()
        page.goto("https://playwright.dev/")
        assert "Playwright" in page.title()
        browser.close()

该测试会启动 Chromium 浏览器,访问 Playwright 官网,并检查标题是否包含 “Playwright”。完成代码编写后,在终端运行以下命令即可执行测试:

pytest

默认情况下,测试会在 Chromium 上以无头模式运行。测试结果和日志会在终端显示,若测试失败,还会呈现错误信息和堆栈跟踪。

四、更新 Playwright

要将 Playwright 更新到最新版本,只需运行以下命令:

pip install pytest-playwright playwright -U

五、Playwright 的系统要求

Playwright 对 Python 的要求是 3.8 或更高版本。对于操作系统:

  • Windows:Windows 10+ 或 Windows Server 2016+ 或 WSL。
  • macOS:macOS 14 Ventura 或更高版本。
  • Linux:支持 Debian 12、Ubuntu 22.04、Ubuntu 24.04,且支持 x86-64 和 arm64 架构。

六、深入探究 Playwright 测试生成器

Playwright 的测试生成器能够记录浏览器操作并生成测试代码,为快速开展测试提供了极大便利。它会自动识别页面中的最佳定位器,优先选择角色、文本和测试 ID 定位器,并在有多个匹配元素时优化定位器以确保唯一性。

运行测试生成器时,使用以下命令:

playwright codegen

可指定测试网站 URL。运行后会打开两个窗口,一个用于与网站交互,另一个是 Playwright Inspector 窗口,用于记录测试并可将生成的代码复制到编辑器中。在浏览器窗口中进行操作,如点击、输入等,Playwright 会生成相应代码显示在 Playwright Inspector 窗口中。完成操作后,点击录制按钮停止录制,并使用复制按钮将代码复制到编辑器。

测试生成器还支持模拟多种环境和状态,如模拟视口大小、设备、配色方案,以及模拟地理位置、语言和时区等。

七、登录相关功能的深入解析

在测试过程中,登录步骤往往繁琐且重复。Playwright 提供了保存和加载身份验证状态的功能,可有效简化测试流程。

(一)保存身份验证状态

运行以下命令:

playwright codegen --save-storage=auth.json

在浏览器窗口中完成登录操作并关闭浏览器后,身份验证状态(包括 cookies、localStorage 和 IndexedDB 数据)将被保存到 auth.json 文件中。需注意的是,auth.json 文件包含敏感信息,仅应在本地使用,并应将其添加到 .gitignore 文件中,或在完成测试后将其删除。

(二)加载身份验证状态

在后续运行测试时使用以下命令加载之前保存的身份验证状态:

playwright codegen --load-storage=auth.json

加载后,所有保存的 cookies、localStorage 和 IndexedDB 数据将被恢复,使 Web 应用进入已登录状态,无需再次登录,从而可以继续从登录状态生成测试。

八、实例演示:登录功能应用

假设要对一个需要登录的网页进行测试,其登录页面为 “https://example.com/login”,登录成功后的页面为 “https://example.com/dashboard”。

(一)保存身份验证状态

运行以下命令:

playwright codegen https://example.com/login --save-storage=auth.json

浏览器窗口和 Playwright Inspector 窗口打开后,在浏览器窗口中输入用户名和密码,完成登录操作并关闭浏览器。此时,身份验证状态将被保存到 auth.json 文件中。

(二)加载身份验证状态

接下来,加载身份验证状态对登录后的页面进行测试。运行以下命令:

playwright codegen --load-storage=auth.json https://example.com/dashboard

加载身份验证状态后,浏览器会自动跳转到 “https://example.com/dashboard” 页面,无需再次登录,可以直接对该页面进行测试操作。

九、下一步操作建议

为了进一步提升测试能力,你可以学习更多 Playwright 的高级功能,如使用 Web 首选断言、页面夹具和定位器编写更复杂的测试,运行单个或多个测试,以及使用有头模式运行测试以便于调试。此外,还可以使用 “playwright codegen” 命令生成测试代码,以及利用 “–trace” 选项记录测试过程,便于分析问题。

总之,Playwright Python 凭借其丰富的功能和简便的操作,为开发者提供了一个高效、可靠的自动化测试解决方案。无论是初学者还是有经验的测试工程师,都能从中受益,快速提升测试效率和质量。

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐