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" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏