playwright-page.get_by_role 完整用法
目录
基础语法
locator = page.get_by_role(role, name="xxx", exact=False)
- role:无障碍角色,代表这个控件的功能身份(`button` / `textbox` / `checkbox`)
- name:无障碍名称(按钮文字、标签文字、placeholder 等)
常用 role 对照表
| role 值 | 对应网页元素 | 示例 |
|---|---|---|
button |
按钮 <button> |
page.get_by_role("button", name="提交").click() |
textbox |
单行文本输入框 <input type="text/password"> |
page.get_by_role("textbox", name="请输入用户名") |
searchbox |
搜索输入框 | page.get_by_role("searchbox", name="搜索") |
checkbox |
复选框 | page.get_by_role("checkbox", name="自动登录").check() |
radio |
单选框 | page.get_by_role("radio", name="选项A").click() |
link |
超链接 <a href> |
page.get_by_role("link", name="首页").click() |
heading |
标题 h1‑h6 | page.get_by_role("heading", name="系统登录") |
option |
下拉选项 | page.get_by_role("option", name="广东") |
核心参数详解
1. name 参数(无障碍名称)
# 模糊匹配,name="搜索全部" 也能命中 name="搜索"
page.get_by_role("button", name="搜索").click()
2. exact=True 精确匹配
默认 `exact=False` 模糊匹配;开启后文字必须一模一样。
# 只有文字完全等于"搜索"才命中,"搜索全部"不会命中
page.get_by_role("button", name="搜索", exact=True).click()
3.name 支持正则表达式
import re
# 忽略大小写匹配 submit
page.get_by_role("button", name=re.compile("submit", re.IGNORECASE)).click()
4. 状态筛选参数(高级)
# 勾选处于未选中状态的复选框
page.get_by_role("checkbox", name="自动登录", checked=False).check()
# 定位一个禁用的按钮
page.get_by_role("button", name="提交", disabled=True)
定位方式对比,什么时候用 get_by_role?
| 定位方法 | 适用场景 | 缺点 |
|---|---|---|
get_by_role() |
原生 button、a、checkbox、输入框等标准控件 | 自定义 div 按钮、placeholder 输入框不稳定 |
get_by_text() |
页面可见文字 | 多处相同文字容易选错 |
get_by_placeholder() |
输入框 | 只能用于带 placeholder 的 input |
locator(".class") CSS |
class/id 固定不变的元素 | 前端一改 class 代码直接报废 |
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。
文章标题:playwright-page.get_by_role 完整用法
本文作者:伟生
发布时间:2026-08-22, 21:19:00
最后更新:2026-08-22, 21:27:30
原始链接:http://yoursite.com/2026/08/22/ceshi_19_playwright_04/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。