阅读(1800) (0)

Puppeteer 可及性

2020-06-24 16:24:33 更新

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;
}