Puppeteer 可及性
class: Accessibility
如果Puppeteer方法无法执行一个请求,就会引发一个错误。例如,屏幕阅读器选择器如果在给定的时间范围内无法匹配,则会失败。
可访问性是非常特定于平台的事情。在不同的平台上,会有不同的屏幕阅读器,它们的输出可能完全不同。
Blink-Chrome的渲染引擎-具有“可访问性树”的概念,然后将其翻译成不同的平台特定的API。可访问性名称空间使用户可以访问“闪烁可访问性树”。
从“眨眼AX树”转换为特定于平台的AX树或屏幕阅读器本身时,大多数可访问性树都会被过滤掉。默认情况下,Puppeteer尝试近似此过滤,仅公开树的“有趣”节点。
Methods
accessibility.snapshot([options])v0.9.0
- options< 对象 >
- interestingOnly< boolean >从树中修剪无趣的节点。默认为true。
- 返回:< Promise < Object >>返回具有以下属性的AXNode对象:
- role< string >的作用。
- name< 字符串 >节点的可读名称。
- value< 字符串 | number >节点的当前值。
- description< 字符串 >节点的其他易于阅读的描述。
- keyshortcuts< string >与此节点关联的键盘快捷键。
- roledescription< 字符串 >角色的一种易于理解的替代方法。
- valuetext< 字符串 >当前值的描述。
- disabled< 布尔 >节点是否被禁用。
- expanded< boolean >节点是展开还是折叠。
- focused< boolean >节点是否聚焦。
- modal< boolean >节点是否为模态。
- multiline< boolean >节点文本输入是否支持多行。
- multiselectable< 布尔值 >是否可以选择多个孩子。
- readonly< boolean >该节点是否为只读。
- required< 布尔 >是否需要节点。
- selected< boolean >是否在其父节点中选择了该节点。
- checked< boolean |“ mixed”>复选框是选中还是“混合”。
- pressed< boolean |“ mixed”>是否已选中切换按钮,还是“已混合”。
- level< 数字 >标题级别。
- valuemin< 数字 >节点中的最小值。
- valuemax< 数字 >节点中的最大值。
- autocomplete< 字符串 >控件支持哪种自动完成功能。
- haspopup< string >当前正在为节点显示哪种弹出窗口。
- invalid< string >此节点的值是否无效以及以何种方式无效。
- orientation< string >节点是水平放置还是垂直放置。
- children< 数组 < 对象 >> 此节点的子AXNode(如果有)。 捕获可访问性树的当前状态。返回的对象表示页面的根可访问节点。
注意 Chromium可访问性树包含大多数平台和大多数屏幕阅读器都未使用的节点。Puppeteer也将丢弃它们,以便于处理树,除非interestingOnly将其设置为false。
转储整个可访问性树的示例:
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);
return foundNode;
}
return null;
}