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

Accessibility

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

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

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

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


Устарело

snapshot

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

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

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

примечание

Дерево доступности Chromium содержит узлы, которые не используются на большинстве платформ и большинством скринридеров. Playwright также отбрасывает их для более простого в обработке дерева, если только interesting_only не установлен в false.

Использование

Пример вывода всего дерева доступности:

snapshot = page.accessibility.snapshot()
print(snapshot)

Пример логирования имени сфокусированного узла:

def find_focused_node(node):
if node.get("focused"):
return node
for child in (node.get("children") or []):
found_node = find_focused_node(child)
if found_node:
return found_node
return None

snapshot = page.accessibility.snapshot()
node = find_focused_node(snapshot)
if node:
print(node["name"])

Аргументы

  • interesting_only bool (опционально)#

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

  • root ElementHandle (опционально)#

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

Возвращает

  • NoneType | Dict#
    • role str

      Роль.

    • name str

      Читаемое человеком имя для узла.

    • value str | float

      Текущее значение узла, если применимо.

    • description str

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

    • keyshortcuts str

      Сочетания клавиш, связанные с этим узлом, если применимо.

    • roledescription str

      Читаемая человеком альтернатива роли, если применимо.

    • valuetext str

      Описание текущего значения, если применимо.

    • disabled bool

      Является ли узел отключенным, если применимо.

    • expanded bool

      Является ли узел развернутым или свернутым, если применимо.

    • focused bool

      Является ли узел сфокусированным, если применимо.

    • modal bool

      Является ли узел модальным, если применимо.

    • multiline bool

      Поддерживает ли ввод текста в узле многострочность, если применимо.

    • multiselectable bool

      Может ли быть выбрано более одного дочернего элемента, если применимо.

    • readonly bool

      Является ли узел только для чтения, если применимо.

    • required bool

      Является ли узел обязательным, если применимо.

    • selected bool

      Является ли узел выбранным в родительском узле, если применимо.

    • checked bool | "mixed"

      Является ли флажок установленным, или "смешанным", если применимо.

    • pressed bool | "mixed"

      Является ли кнопка-переключатель нажатой, или "смешанной", если применимо.

    • level int

      Уровень заголовка, если применимо.

    • valuemin float

      Минимальное значение в узле, если применимо.

    • valuemax float

      Максимальное значение в узле, если применимо.

    • autocomplete str

      Какой тип автозаполнения поддерживается элементом управления, если применимо.

    • haspopup str

      Какой тип всплывающего окна в данный момент отображается для узла, если применимо.

    • invalid str

      Является ли и каким образом значение этого узла недействительным, если применимо.

    • orientation str

      Ориентирован ли узел горизонтально или вертикально, если применимо.

    • children List[Dict]

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