项目集成
Web 自动化与接口自动化相比,只是多了浏览器自动化的工具,可以直接参考我写的接口自动化系列文章,只是多了安装浏览器自动化工具的工作。
安装 playwright:
浏览器自动化工具,这里我选择 playwright。
关于环境要求,官方文档这样描述:
-
Python 3.8 或更高版本。
-
Windows 11+、Windows Server 2019+ 或适用于 Linux 的 Windows 子系统 (WSL)。
-
macOS 14 Ventura 或更高版本。
-
Debian 12、Ubuntu 22.04、Ubuntu 24.04,基于 x86-64 和 arm64 架构。
pip pytest-playwright
执行上述命令,会同时安装 pytest、playwright 和 pytest-playwright。pytest 是主测试框架,用于编写和运行测试用例,playwright 是一个用于自动化浏览器测试的库,提供核心Api,pytest-playwright 是 pytest 的一个插件,用于在 pytest 中使用 playwright 进行浏览器自动化测试。
所以读者不用再单独安装 pytest。
项目集成:
除了不用再安装 pytest,可以直接照搬我写的接口自动化系列的项目集成。
接口自动化测试框架/
├── business/ # 业务逻辑层(接口封装层,解耦用例与接口细节)
│ └── __init__.py
├── common/ # 【核心】公共工具模块(复用性代码,核心层)
│ ├── __init__.py # 标记为Python包
│ ├── get_data.py # 数据获取工具,内有 load_toml 函数
│ └── database.py # 数据库封装工具
├── cases/ # 自动化用例目录(仅调用业务层,不写具体逻辑)
│ └── __init__.py
├── config/ # 配置文件目录(与代码解耦,环境切换核心)
│ └── __init__.py
├── data/ # 测试数据目录(数据驱动,与用例分离)
├── docs/ # 项目文档目录(团队协作必备)
│ ├── api_docs.md # 接口文档(地址、参数、请求方式、响应示例)
│ └── usage_guide.md # 使用指南(环境搭建、运行命令、问题排查)
├── pytest.toml # pytest 配置文件
├── run.py # 项目启动文件(入口)
├── requirements.txt # 项目依赖包(指定版本,避免环境问题)
└── README.md # 项目说明(必选,快速上手:环境、运行、目录说明)
浏览器选择
要使 playwright 正常工作,必须给它指定对应的浏览器。当前市场有三种浏览器引擎,分别是 Google 的 Chromium(Blink)、苹果的 WebKit(Blink的近亲)、Mozilla 的 Firefox(Gecko)。
WebKit 是 Safari、邮件、App Store 以及 macOS、iOS 和 Linux 上许多其他应用使用的网页浏览器引擎。
基于 Chromium 内核的浏览器比较多,市场占比最多,最出名的是 Google Chrome 和 Edge 浏览器。
基于 Firefox 内核的浏览器,多用于 Linux 系统上,市场占比较少。
安装浏览器:
可以手动下载安装浏览器,也可以使用 playwright install 命令安装,推荐命令安装。如果你选择 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
安装默认浏览器,包括 Chromium、Firefox 和 WebKit 三种引擎开源浏览器
- $ 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。
先安装浏览器的系统依赖项:
playwright install-deps
然后按需安装浏览器:
# 安装默认浏览器,包括 Chromium、Firefox 和 WebKit 三种引擎开源浏览器
playwright install
# 安装特定浏览器,比如 Chromium
playwright install Chromium
快速使用
编写测试用例:
# cases/test_example.py
from playwright.sync_api import Page
from playwright.sync_api import expect
def test_goto_baidu(page: Page):
page.goto("https://baidu.com/")
page.wait_for_timeout(2000)
expect(page.get_by_role("link", name="新闻")).to_be_visible()
**运行命令如下:
# 使用开源 chromium 浏览器(默认),--headed 会显示画面,调试时使用。实际测试时无需使用
python run.py --headed
# 使用开源 webkit 浏览器
python run.py --browser=webkit --headed
# 使用开源 Firefox 浏览器
python run.py --browser=firefox --headed
# 使用 Goole Chrome 浏览器(基于 Chromium 引擎)
python run.py --browser=chromium --browser-channel=chrome --headed
# 使用 Edge 浏览器(基于 Chromium 引擎)
python run.py --browser=chromium --browser-channel=msedge --headed
测试生成器
playwright 提供 codegen 窗口,在浏览器窗口的各种操作都会作为响应代码被记录下来,可以复制这些代码用于测试用例。
运行测试生成器
先参阅一下 help 信息:
playwright codegen --help
用法:playwright codegen [选项] [网址]
打开页面并为用户操作生成代码
选项:
-o, --output <文件名> 将生成的脚本保存到文件中
--target <语言> 生成的目标语言,可选值为 javascript、playwright-test、python、python-async、python-pytest、csharp、csharp-mstest、csharp-nunit、java、java-junit(默认值:"python")
--test-id-attribute <属性名> 使用指定的属性生成数据测试 ID 选择器
-b, --browser <浏览器类型> 使用的浏览器类型,可选值为 cr、chromium、ff、firefox、wk、webkit(默认值:"chromium")
--block-service-workers 阻止服务工作线程
--channel <渠道> Chromium 分发渠道,例如 "chrome"、"chrome-beta"、"msedge-dev" 等
--color-scheme <方案> 模拟首选颜色方案,可选值为 "light" 或 "dark"
--device <设备名称> 模拟设备,例如 "iPhone 11"
--geolocation <坐标> 指定地理位置坐标,例如 "37.819722,-122.478611"
--ignore-https-errors 忽略 https 错误
--load-storage <文件名> 从文件加载上下文存储状态,该文件之前使用 --save-storage 保存--lang <语言> 指定语言/区域设置,例如“en-GB”
--proxy-server <代理> 指定代理服务器,例如“http://myproxy:3128”或“socks5://myproxy:8080”
--proxy-bypass <绕过> 以逗号分隔的要绕过代理的域名,例如“.com,chromium.org,.domain.com”
--save-har <文件名> 在结束时保存包含所有网络活动的 HAR 文件
--save-har-glob <通配符模式> 根据此通配符模式与 URL 匹配来筛选 HAR 中的条目
--save-storage <文件名> 在结束时保存上下文存储状态,以便稍后使用 --load-storage
--timezone <时区> 要模拟的时区,例如“Europe/Rome”
--timeout <超时时间> Playwright 操作的超时时间(以毫秒为单位),默认无超时
--user-agent <用户代理字符串> 指定用户代理字符串
--user-data-dir <目录> 使用指定的用户数据目录,而不是新上下文
--viewport-size <大小> 以像素为单位指定浏览器视口大小,例如“1280, 720”
-h, --help 显示命令的帮助信息
示例:
$ codegen
$ codegen --target=python
$ codegen -b webkit https://example.com
参数 –browser 可以指定浏览器类型,如果不指定,默认使用 Chromium。
参数 –channel 用于指定 Chromium 浏览器的分发渠道,例如 “chrome”、“chrome-beta”、“msedge-dev” 等。
试试打开测试生成器,导航至百度网站:
playwright codegen https://baidu.com/

测试生成器用法
- 录制功能:打开后可以生成在浏览器上的所有操作代码

- 选择定位器:选择该工具后,点击浏览器里任何元素会在 Inspector 的 “Locator” 窗口显示推荐的 Playwright 定位器。

- 断言元素可见性:录制中选择该工具,在浏览器里点某个元素,会生成断言代码。检验目标元素是否在页面中渲染并且对用户可见(非隐藏、非遮挡、非透明)。

- 断言文本内容:录制中选择该工具,在浏览器里点某个元素,会生成断言代码。检验目标元素的可见文本与预期字符串是否一致。

- 断言表单值:录制中选择该工具,在浏览器里点具有 value 属性的元素,会生成断言代码。检验该元素的 value 属性值是否与预期一致。

- 断言 ARIA 语义快照:录制中选择该工具,在浏览器里当前页面,会生成断言代码。对比元素在可访问性树(Accessibility Tree)里的语义和文本结构是否与预期一致(非图片对比)。

- 选择语言:可以选择具体语言的代码

- 清理已生成代码

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