用途
该技能提供一份完整的 Playwright 自动化模式、选择器与最佳实践参考,用于指导 Web 应用测试的编写。内容以代码示例组织,覆盖从元素定位到测试执行、调试的完整流程。
主要能力
选择器
文档按稳定性给出优先级建议:data-testid 属性最稳定,其次是 role= 语义选择器,然后是 text= 文本选择器、id 属性、CSS 类,XPath 最脆弱、应尽量避免。具体支持:
- 文本选择器:
page.click('text=Login')、精确匹配text="Sign Up"、正则text=/log.*in/i - 角色选择器:
role=button[name="Submit"]、role=textbox[name="Email"]、role=link、role=checkbox - CSS 选择器:
#submit-button、.email-input、button.primary、nav > ul > li:first-child - XPath:
xpath=//button[contains(text(), "Submit")] - data 属性:
[data-testid="submit-btn"]、[data-test="email-input"] - 链式选择器:
page.locator('div.modal').locator('button.submit').click()
等待策略
- 加载状态等待:
wait_for_load_state('networkidle')、'domcontentloaded'、'load' - 元素等待:
wait_for_selector(..., state='visible'/'hidden'/'attached'/'detached') - 超时等待:
wait_for_timeout(500),文档建议谨慎使用 - 自定义条件:
wait_for_function('() => window.appReady === true') - 自动等待:click、fill 等操作会自动等待元素可见、稳定、可用且未被遮挡
元素交互
覆盖点击(右键、双击、修饰键、force)、表单填写与按键、下拉选择(按 label/value/index/多选)、复选框与单选按钮、文件上传(单个/多个/清空)、悬停与聚焦。
断言
使用 expect 断言元素可见性、文本内容(精确/包含/正则)、启用禁用状态、勾选状态、可编辑性、属性与值、CSS 类、元素数量。
测试组织
给出基础结构、Pytest fixture(browser、page)、测试分组类、setup/teardown 的写法示例。
网络拦截
支持 mock API 响应(route.fulfill)、屏蔽图片与样式表等资源以加速测试、等待特定 API 响应(expect_response)。
截图与录像
支持整页截图、元素截图、自定义视口尺寸截图,以及通过 record_video_dir 录制视频。
调试
支持 page.pause() 打开 Playwright Inspector、监听 console 日志、slow_mo 慢动作、DEBUG 环境变量详细日志。
并行执行
通过 pytest-xdist 实现并行(pytest -n auto 或指定 worker 数),并可用浏览器上下文隔离保证每个测试的 cookies、localStorage 等互不影响。
使用方式
文档中的示例主要基于 Python 的 Playwright 同步 API(from playwright.sync_api import sync_playwright),并推荐配合 Pytest 使用。示例包含安装命令 pip install pytest-xdist。
适用场景
适合使用 Playwright 编写 Web 应用端到端测试的开发者,作为选择器写法、等待策略、断言与测试组织方式的参考手册。
限制
资料未提供该技能的具体安装方式、运行环境要求、版本兼容性、收费信息或平台支持范围,这些内容暂未提供。