一般提到 Web 自动化测试,大多人会立即想到使用 Selenium。Selenium 无疑很强大,但也古老,仅仅浏览器不小心升级,就很大可能导致项目运行不了,语法也略显繁琐。

Playwright 由微软推出,相较于 Selenium 更现代化、更简洁和更快,支持智能等待(元素)。缺点是不支持IE、社区资料少。

每个自动化测试项目,我都推荐单独搭建虚拟环境,以便管理。如何搭建虚拟环境,查阅Python进阶教程丨虚拟环境搭建Pycharm 创建并管理虚拟环境

关于系统要求,官方文档这样描述:

  • Python 3.8 或更高版本。

  • Windows 10+、Windows Server 2016+ 或适用于 Linux 的 Windows 子系统 (WSL)。

  • macOS 14 Ventura 或更高版本。

  • Debian 12、Ubuntu 22.04、Ubuntu 24.04,基于 x86-64 和 arm64 架构。

官方文档看起来非常详细了,为什么还要写文章呢?

最主要为了记录自己学习的过程,另一方面官方文档也不是那么详细,观看它需要一点门槛。

安装 Playwright

本地终端运行:

pip install --upgrade pip
pip install playwright
playwright install

需要注意:运行 playwright install 命令会安装 Chromium、Firefox 和 WebKit 三种浏览器。你需要知道 Chromium 不等于 Google Chrome。如果你的测试机上已安装 Google Chrome 、 Microsoft Edge(两者都基于 Chromium)或者其它浏览器,且只关注它们,完全不需要执行 playwright install 命令。

你也可以使用 playwright install --help 查看如何下载浏览器:

playwright install --help

用法:playwright 安装 [选项] [浏览器...]

确保安装了此版本 Playwright 所需的浏览器。

选项:
--with-deps  安装浏览器的系统依赖项
--dry-run    不执行安装,仅打印信息
--force      强制重新安装稳定浏览器通道
--only-shell 安装 Chromium 时仅安装无头 shell
--no-shell   安装 Chromium 时不安装无头 shell
-h, --help   显示命令的帮助信息



示例:
- $ install
安装默认浏览器。

- $ install chrome firefox
安装自定义浏览器,支持 chromium、chromium-headless-shell、chromium-tip-of-tree-headless-shell、chrome、chrome-beta、msedge、msedge-beta、msedge-dev、bidi-chromium、firefox、webkit。

比如你的测试机上没有 chrome 浏览器,你可以 playwright install chrome,或者同时安装多个 playwright install chrome msedge

启动浏览器并导航到目标网站

playwright 支持打开三种类型浏览器:

  1. sync_playwright.chromium.launch()
  2. sync_playwright.webkit.launch()
  3. sync_playwright.firefox.launch()

现在 playwright 只对 chromium 支持 channel 参数。例如打开 Edge 浏览器:

browser = sync_playwright.chromium.launch(channel="msedge")

全部 channel 参数如下:

参数 浏览器
chromium 开源的 Chromium 浏览器,Playwright 默认安装并支持。它是一个功能完整的浏览器,具有图形界面(GUI)
chromium-headless-shell Headless 模式 的 Chromium 浏览器,即无头模式(没有用户界面),适合服务器或 CI 环境中运行自动化测试
chromium-tip-of-tree-headless-shell 最新开发版本(tip of tree)的 Headless Chromium,通常包含最新的功能和实验性特性,但可能不稳定
chrome Google Chrome 浏览器的稳定版本
chrome-beta Google Chrome 的 Beta 版本,比稳定版更新更快,但稳定性略低
msedge Microsoft Edge 的稳定版本
msedge-beta Microsoft Edge 的 Beta 版本,类似于 chrome-beta,提供了即将发布的功能预览
msedge-dev Microsoft Edge 的 Dev 通道版本,属于更前沿的开发版本,更新频率更高,适合开发者早期测试
bidi-chromium 支持 BiDi(双向通信)协议 的 Chromium 版本,允许更灵活地控制浏览器行为,适用于高级自动化场景

现在我们启动浏览器:

from playwright.sync_api import sync_playwright


def test_browser():
    with sync_playwright() as p:
        # 实例化。这里启动 Edge 浏览器,你的测试中请选择已安装的浏览器
		# 默认headless=True(无头模式),如果想看到浏览器界面: headless=False
        browser = p.chromium.launch(channel="msedge", headless=False)  
		
		# 打开一个新页面
        page = browser.new_page()

        # 导航到目标网站
        page.goto("https://www.baidu.com ")
		
        # 等待一段时间以便观察结果
        page.wait_for_timeout(5000)
		
        # 关闭浏览器
        browser.close()		
		
if __name__ == "__main__":
    test_browser()

定位元素

© 转载需要保留原始链接,未经明确许可,禁止商业使用。CC BY-NC-ND 4.0