Puppeteer 可及性

2020-06-29 14:02 更新

class: Accessibility

如果Puppeteer方法無法執(zhí)行一個(gè)請(qǐng)求,就會(huì)引發(fā)一個(gè)錯(cuò)誤。例如,屏幕閱讀器選擇器如果在給定的時(shí)間范圍內(nèi)無法匹配,則會(huì)失敗。

可訪問性是非常特定于平臺(tái)的事情。在不同的平臺(tái)上,會(huì)有不同的屏幕閱讀器,它們的輸出可能完全不同。

Blink-Chrome的渲染引擎-具有“可訪問性樹”的概念,然后將其翻譯成不同的平臺(tái)特定的API。可訪問性名稱空間使用戶可以訪問“閃爍可訪問性樹”。

從“眨眼AX樹”轉(zhuǎn)換為特定于平臺(tái)的AX樹或屏幕閱讀器本身時(shí),大多數(shù)可訪問性樹都會(huì)被過濾掉。默認(rèn)情況下,Puppeteer嘗試近似此過濾,僅公開樹的“有趣”節(jié)點(diǎn)。

Methods

accessibility.snapshot([options])v0.9.0

  • options< 對(duì)象 >
  • interestingOnly< boolean >從樹中修剪無趣的節(jié)點(diǎn)。默認(rèn)為true。
  • 返回:< Promise < Object >>返回具有以下屬性的AXNode對(duì)象:
  • role< string >的作用。
  • name< 字符串 >節(jié)點(diǎn)的可讀名稱。
  • value< 字符串 | number >節(jié)點(diǎn)的當(dāng)前值。
  • description< 字符串 >節(jié)點(diǎn)的其他易于閱讀的描述。
  • keyshortcuts< string >與此節(jié)點(diǎn)關(guān)聯(lián)的鍵盤快捷鍵。
  • roledescription< 字符串 >角色的一種易于理解的替代方法。
  • valuetext< 字符串 >當(dāng)前值的描述。
  • disabled< 布爾 >節(jié)點(diǎn)是否被禁用。
  • expanded< boolean >節(jié)點(diǎn)是展開還是折疊。
  • focused< boolean >節(jié)點(diǎn)是否聚焦。
  • modal< boolean >節(jié)點(diǎn)是否為模態(tài)。
  • multiline< boolean >節(jié)點(diǎn)文本輸入是否支持多行。
  • multiselectable< 布爾值 >是否可以選擇多個(gè)孩子。
  • readonly< boolean >該節(jié)點(diǎn)是否為只讀。
  • required< 布爾 >是否需要節(jié)點(diǎn)。
  • selected< boolean >是否在其父節(jié)點(diǎn)中選擇了該節(jié)點(diǎn)。
  • checked< boolean |“ mixed”>復(fù)選框是選中還是“混合”。
  • pressed< boolean |“ mixed”>是否已選中切換按鈕,還是“已混合”。
  • level< 數(shù)字 >標(biāo)題級(jí)別。
  • valuemin< 數(shù)字 >節(jié)點(diǎn)中的最小值。
  • valuemax< 數(shù)字 >節(jié)點(diǎn)中的最大值。
  • autocomplete< 字符串 >控件支持哪種自動(dòng)完成功能。
  • haspopup< string >當(dāng)前正在為節(jié)點(diǎn)顯示哪種彈出窗口。
  • invalid< string >此節(jié)點(diǎn)的值是否無效以及以何種方式無效。
  • orientation< string >節(jié)點(diǎn)是水平放置還是垂直放置。
  • children< 數(shù)組 < 對(duì)象 >> 此節(jié)點(diǎn)的子AXNode(如果有)。 捕獲可訪問性樹的當(dāng)前狀態(tài)。返回的對(duì)象表示頁面的根可訪問節(jié)點(diǎn)。

注意 Chromium可訪問性樹包含大多數(shù)平臺(tái)和大多數(shù)屏幕閱讀器都未使用的節(jié)點(diǎn)。Puppeteer也將丟棄它們,以便于處理樹,除非interestingOnly將其設(shè)置為false。

轉(zhuǎn)儲(chǔ)整個(gè)可訪問性樹的示例:

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

記錄焦點(diǎn)節(jié)點(diǎn)名稱的示例:

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;
}
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)