Skip to main content

Accessibility

已弃用 此类已不再推荐使用。如果需要测试页面可访问性,请使用如 Axe 等其他库。有关与 Axe 集成的 Node.js 指南,请参阅我们的 指南

Accessibility 类提供了检查 Chromium 可访问性树的方法。可访问性树被辅助技术(如屏幕阅读器切换设备)使用。

可访问性在不同平台上差异很大。不同平台有不同的屏幕阅读器,输出可能截然不同。

Chromium、Firefox 和 WebKit 的渲染引擎都有“可访问性树”概念,随后会转换为平台特定的 API。Accessibility 命名空间提供对该树的访问。

大多数可访问性树在从内部浏览器 AX 树转换为平台特定 AX 树或被辅助技术本身过滤时会被过滤。默认情况下,Playwright 会尝试近似这种过滤,只暴露“有意义”的节点。

accessibility.snapshot([options])

Added in: v1.8
  • options? <Object>
    • interestingOnly? <boolean> 剪枝不重要的节点。默认 true#
    • root? <ElementHandle> 快照的根 DOM 元素。默认整个页面。#
  • returns: <Promise<null|Object>>#
    • role <string> 角色
    • name <string> 人类可读的名称
    • value <string|number> 节点的当前值(如果适用)
    • description <string> 额外的描述(如果适用)
    • keyshortcuts <string> 键盘快捷键(如果适用)
    • roledescription <string> 角色的替代描述(如果适用)
    • valuetext <string> 当前值的描述(如果适用)
    • disabled <boolean> 节点是否禁用
    • expanded <boolean> 节点是否展开
    • focused <boolean> 节点是否获得焦点
    • modal <boolean> 节点是否为模态窗口
    • multiline <boolean> 文本输入是否支持多行
    • multiselectable <boolean> 是否允许多选
    • readonly <boolean> 是否只读
    • required <boolean> 是否必填
    • selected <boolean> 是否在父节点中被选中
    • checked <boolean|"mixed"> 复选框是否选中或混合状态
    • pressed <boolean|"mixed"> 开关按钮是否按下或混合状态
    • level <number> 标题的层级
    • valuemin <number> 最小值
    • valuemax <number> 最大值
    • autocomplete <string> 自动完成类型
    • haspopup <string> 弹出窗口类型
    • invalid <string> 值的无效状态
    • orientation <string> 水平或垂直方向
    • children <Array<Object>> 子节点列表

已弃用 此方法已不推荐使用。请使用其他库如 Axe 进行可访问性测试。有关与Axe集成的操作指南,请参阅我们的Node.js指南

捕获当前可访问性树的状态。返回的对象表示页面的根可访问节点。

note

Chromium 的可访问性树包含在大多数平台和屏幕阅读器上未使用的节点。除非将 interestingOnly 设置为 false,否则 Playwright 会丢弃这些节点,以生成更易处理的树。

以下示例展示如何获取完整的可访问性树:

const snapshot = await page.accessibility.snapshot();
console.log(snapshot);

以下示例展示如何记录聚焦节点的名称:

const snapshot = await page.accessibility.snapshot();
const node = findFocusedNode(snapshot);
console.log(node && node.name);

function findFocusedNode(node) {
if (node.focused)
return node;
for (const child of node.children || []) {
const foundNode = findFocusedNode(child);
if (foundNode)
return foundNode;
}
return null;
}