Accessibility
Класс Accessibility предоставляет методы для инспектирования дерева доступности Chromium. Дерево доступности используется вспомогательными технологиями, такими как скринридеры или переключатели.
Доступность — это очень специфичная для платформы вещь. На разных платформах существуют разные скринридеры, которые могут давать совершенно разные результаты.
Рендеринг-движки Chromium, Firefox и WebKit имеют концепцию "дерева доступности", которое затем переводится в различные платформенно-специфичные API. Пространство имен Accessibility предоставляет доступ к этому дереву доступности.
Большая часть дерева доступности отфильтровывается при преобразовании из внутреннего AX-дерева браузера в платформенно-специфичное AX-дерево или самими вспомогательными технологиями. По умолчанию Playwright пытается приблизительно воспроизвести эту фильтрацию, показывая только "интересные" узлы дерева.
Устарело
snapshot
Добавлено до v1.9Этот метод устарел. Пожалуйста, используйте другие библиотеки, такие как Axe, если вам нужно тестировать доступность страницы. См. наш руководство по интеграции с Axe для Node.js.
Фиксирует текущее состояние дерева доступности. Возвращаемый объект представляет корневой доступный узел страницы.
Дерево доступности Chromium содержит узлы, которые не используются на большинстве платформ и большинством скринридеров. Playwright также отбрасывает их для более простого в обработке дерева, если только interesting_only не установлен в false.
Использование
Пример вывода всего дерева доступности:
- Sync
- Async
snapshot = page.accessibility.snapshot()
print(snapshot)
snapshot = await page.accessibility.snapshot()
print(snapshot)
Пример логирования имени сфокусированного узла:
- Sync
- Async
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"])
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 = await page.accessibility.snapshot()
node = find_focused_node(snapshot)
if node:
print(node["name"])
Аргументы
-
interesting_onlybool (опционально)#Обрезать неинтересные узлы из дерева. По умолчанию
true. -
rootElementHandle (опционально)#Корневой DOM элемент для снимка. По умолчанию вся страница.
Возвращает
- NoneType | Dict#
-
rolestrРоль.
-
namestrЧитаемое человеком имя для узла.
-
Текущее значение узла, если применимо.
-
descriptionstrДополнительное читаемое человеком описание узла, если применимо.
-
keyshortcutsstrСочетания клавиш, связанные с этим узлом, если применимо.
-
roledescriptionstrЧитаемая человеком альтернатива роли, если применимо.
-
valuetextstrОписание текущего значения, если применимо.
-
disabledboolЯвляется ли узел отключенным, если применимо.
-
expandedboolЯвляется ли узел развернутым или свернутым, если применимо.
-
focusedboolЯвляется ли узел сфокусированным, если применимо.
-
modalboolЯвляется ли узел модальным, если применимо.
-
multilineboolПоддерживает ли ввод текста в узле многострочность, если применимо.
-
multiselectableboolМожет ли быть выбрано более одного дочернего элемента, если применимо.
-
readonlyboolЯвляется ли узел только для чтения, если применимо.
-
requiredboolЯвляется ли узел обязательным, если применимо.
-
selectedboolЯвляется ли узел выбранным в родительском узле, если применимо.
-
checkedbool | "mixed"Является ли флажок установленным, или "смешанным", если применимо.
-
pressedbool | "mixed"Является ли кнопка-переключатель нажатой, или "смешанной", если применимо.
-
levelintУровень заголовка, если применимо.
-
valueminfloatМинимальное значение в узле, если применимо.
-
valuemaxfloatМаксимальное значение в узле, если применимо.
-
autocompletestrКакой тип автозаполнения поддерживается элементом управления, если применимо.
-
haspopupstrКакой тип всплывающего окна в данный момент отображается для узла, если применимо.
-
invalidstrЯвляется ли и каким образом значение этого узла недействительным, если применимо.
-
orientationstrОриентирован ли узел горизонтально или вертикально, если применимо.
-
Дочерние узлы, если есть, если применимо.
-