Skip to main content

Accessibility

停用提示:本类已不再维护。若需执行可访问性测试,请使用 Axe 等专用库,可参考 Playwright Node.js 指南 中的集成方式。

Accessibility 类提供了检查 Chromium 可访问性树的方法,该树将被 屏幕阅读器无障碍开关设备 等辅助技术消费。

可访问性在不同平台之间差异巨大,并且各类屏幕阅读器输出内容也不尽相同。

Chromium、Firefox、WebKit 内部都有“可访问性树”这一抽象,并会将其映射到平台特定的 API。Accessibility 命名空间提供了访问这棵树的入口。

当浏览器内部的 AX 树被转换为平台特定表示,或被辅助技术消费时,很多节点都会被过滤。Playwright 默认会模拟这种过滤,仅返回“有意义”的节点。

accessibility.snapshot(**kwargs)

Added in: v1.8
  • interesting_only <bool> 是否剔除不重要的节点,默认为 true#
  • root <ElementHandle> 作为快照根节点的元素,默认取整页。#
  • 返回值: <NoneType|Dict>#
    • role <str> 角色
    • name <str> 屏幕阅读器可读的名称。
    • value <str|float> 当前值(如适用)。
    • description <str> 额外描述信息。
    • keyshortcuts <str> 快捷键。
    • roledescription <str> 角色的可读描述。
    • valuetext <str> 当前值的文字描述。
    • disabled/expanded/focused/modal/multiline/multiselectable/readonly/required/selected <bool> 对应的状态。
    • checked/pressed <bool|"mixed"> 复选框或开关按钮状态。
    • level <int> 标题等级。
    • valuemin/valuemax <float> 取值范围。
    • autocomplete <str> 支持的自动填充类型。
    • haspopup <str> 当前显示的弹出层类型。
    • invalid <str> 值的失效类型。
    • orientation <str> 方向(水平/垂直)。
    • children <List[Dict]> 子节点列表。

停用提示:该方法同样已废弃,建议改用 Axe 等库获取无障碍信息。

捕获当前可访问性树的快照,返回表示整页可访问节点结构的对象。

note

Chromium 的可访问性树包含大量在多数平台/读屏器中不会使用的节点。除非将 interesting_only 设为 false,否则 Playwright 会自动过滤这些节点,以便输出更有意义的树。

打印整个可访问性树:

snapshot = page.accessibility.snapshot()
print(snapshot)

下例展示如何输出当前获得焦点节点的名称:

def find_focused_node(node):
if (node.get("focused"))
return node
for child in (node.get("children") or []):
found_node = find_focused_node(child)
if (found_node)
return found_node
return None

snapshot = page.accessibility.snapshot()
node = find_focused_node(snapshot)
if node:
print(node["name"])