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_only
bool (опционально)#Обрезать неинтересные узлы из дерева. По умолчанию
true
. -
root
ElementHandle (опционально)#Корневой DOM элемент для снимка. По умолчанию вся страница.
Возвращает
- NoneType | Dict#
-
role
strРоль.
-
name
strЧитаемое человеком имя для узла.
-
Текущее значение узла, если применимо.
-
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Ориентирован ли узел горизонтально или вертикально, если применимо.
-
Дочерние узлы, если есть, если применимо.
-