Перейти к основному содержимому

Accessibility

Класс Accessibility предоставляет методы для инспекции дерева доступности Chromium. Дерево доступности используется вспомогательными технологиями, такими как экранные считыватели или переключатели.

Доступность — это очень специфичная для платформы вещь. На разных платформах существуют разные экранные считыватели, которые могут выдавать совершенно разные результаты.

Рендеринг-движки Chromium, Firefox и WebKit имеют концепцию "дерева доступности", которое затем переводится в различные специфичные для платформы API. Пространство имен Accessibility предоставляет доступ к этому дереву доступности.

Большая часть дерева доступности отфильтровывается при преобразовании из внутреннего AX-дерева браузера в специфичное для платформы AX-дерево или самими вспомогательными технологиями. По умолчанию Playwright пытается приблизить это фильтрацию, exposing только "интересные" узлы дерева.


Устарело

snapshot

Добавлено до v1.9 accessibility.snapshot
Устарело

Этот метод устарел. Пожалуйста, используйте другие библиотеки, такие как Axe, если вам нужно протестировать доступность страницы. См. наш гид по интеграции с Axe.

Фиксирует текущее состояние дерева доступности. Возвращаемый объект представляет корневой доступный узел страницы.

примечание

Дерево доступности Chromium содержит узлы, которые не используются на большинстве платформ и большинством экранных считывателей. Playwright также отфильтрует их для упрощения обработки дерева, если 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);
if (foundNode)
return foundNode;
}
return null;
}

Аргументы

  • options Object (необязательный)
    • interestingOnly boolean (необязательный)#

      Удалить неинтересные узлы из дерева. По умолчанию true.

    • root ElementHandle (необязательный)#

      Корневой DOM-элемент для снимка. По умолчанию — вся страница.

Возвращает

  • 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>

      Дочерние узлы, если есть, если применимо.