Поделиться через


Обзор дерева автоматизации пользовательского интерфейса

Вспомогательные технологические продукты и тестовые скрипты перемещаются в дерево автоматизации пользовательского интерфейса Майкрософт для сбора сведений о пользовательском интерфейсе и его элементах.

В дереве автоматизации пользовательского интерфейса находится корневой элемент, представляющий окно рабочего стола Windows ("рабочий стол") и дочерние элементы которого представляют окна приложений. Каждый из этих дочерних элементов может содержать элементы, представляющие элементы пользовательского интерфейса, такие как меню, кнопки, панели инструментов и поля списка. Эти элементы могут содержать элементы, такие как элементы списка.

Дерево автоматизации пользовательского интерфейса не является фиксированной структурой. Он редко встречается в его общей сложности, потому что он может содержать тысячи элементов. Части дерева автоматизации пользовательского интерфейса создаются по мере необходимости клиентом, и структура дерева изменяется при добавлении, перемещении или удалении элементов.

Поставщики автоматизации пользовательского интерфейса поддерживают дерево автоматизации пользовательского интерфейса, реализуя навигацию между элементами в фрагменте. Фрагмент представляет собой полную поддереву элементов из определенной платформы и имеет корневой элемент (называемый корневым фрагмента), который обычно размещается в окне.

Поставщики не занимаются навигацией между элементами управления. Это управляется ядром автоматизации пользовательского интерфейса, которое использует сведения от поставщиков окон по умолчанию.

В этом разделе содержатся следующие разделы.

Представления дерева автоматизации пользовательского интерфейса

Дерево автоматизации пользовательского интерфейса можно фильтровать для создания представлений, содержащих только те элементы автоматизации пользовательского интерфейса, которые относятся к конкретному клиенту. Этот подход позволяет клиентам настраивать структуру, представленную с помощью автоматизации пользовательского интерфейса в соответствии с конкретными потребностями.

Клиент может настроить представление путем определения области и фильтрации. Определение области — это установление границ вида, начиная с базового элемента. Например, приложение может захотеть найти только прямые дочерние элементы рабочего стола или все подчиненные элементы окна приложения. Фильтрация определяет типы элементов, включенных в представление.

Поставщики автоматизации пользовательского интерфейса поддерживают фильтрацию путем определения свойств элементов, включая свойства IUIAutomationElement::IsControlElement и IUIAutomationElement::IsContentElement.

Автоматизация пользовательского интерфейса предоставляет три представления по умолчанию: необработанное представление, представление элемента управления и представление содержимого. Эти представления определяются типом выполняемой фильтрации. Область любого представления определяется приложением. Приложение может применять другие фильтры к свойствам; например, чтобы включить в представление элемента управления только включенные элементы управления.

Необработанное представление

Необработанное представление дерева автоматизации пользовательского интерфейса — это полное дерево элементов автоматизации, для которых рабочий стол является корнем. Необработанное представление тесно соответствует собственной программной структуре приложения и является наиболее подробным представлением. Это также основа, на которой построены другие представления дерева. Поскольку это представление зависит от базовой платформы пользовательского интерфейса, исходное представление кнопки Windows Presentation Foundation (WPF) отличается от исходного представления кнопки Microsoft Win32.

Необработанное представление получается путем поиска элементов без указания свойств или используя IUIAutomation::RawViewWalker для получения интерфейса IUIAutomationTreeWalker для навигации по дереву.

Вид управления

Контрольное представление является подмножеством необработанного представления. Он включает только те элементы пользовательского интерфейса, у которых свойство IUIAutomationElement::IsControlElement установлено в TRUE.

Представление элемента управления включает элементы пользовательского интерфейса, предоставляющие пользователю сведения или позволяющие пользователю выполнять действие. Это элементы пользовательского интерфейса, которые наиболее интересны для автоматизированного тестирования приложений.

Представление элемента управления также включает неинтерактивные элементы пользовательского интерфейса, которые вносят вклад в логическую структуру пользовательского интерфейса. К ним относятся контейнеры элементов, такие как заголовки представления списка, панели инструментов, меню и строка состояния. Другие неинтерактивные элементы, отображаемые в представлении элемента управления, представляют собой графику со сведениями и статическим текстом в диалоговом окне.

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

Представление дерева автоматизации пользовательского интерфейса тесно соответствует структуре пользовательского интерфейса, воспринимаемой конечным пользователем. Это упрощает продукту вспомогательных технологий описание пользовательского интерфейса конечному пользователю и помогает этому пользователю взаимодействовать с приложением.

Представление элемента управления выбирается на основе поиска элементов, у которых свойство IUIAutomationElement::IsControlElement установлено в true, или, с помощью ControlViewWalker, для получения интерфейса IUIAutomationTreeWalker для навигации по дереву.

Просмотр содержимого

Представление содержимого дерева автоматизации пользовательского интерфейса — это подмножество представления элемента управления. Он включает только те элементы пользовательского интерфейса, которые имеют свойство IUIAutomationElement::IsControlElementи свойство IUIAutomationElement::IsContentElement значение TRUE.

Представление содержимого содержит элементы пользовательского интерфейса, которые передают фактические сведения в пользовательском интерфейсе, включая элементы пользовательского интерфейса, которые могут получать фокус клавиатуры и некоторый текст, который не является меткой для элемента пользовательского интерфейса. Это элементы пользовательского интерфейса, наиболее интересные приложению для чтения с экрана. Например, значения в раскрывающемся списке отображаются в представлении содержимого, так как значения представляют сведения, используемые конечным пользователем.

В представлении содержимого комбинированный список и список представлены как коллекция элементов пользовательского интерфейса, где можно выбрать один или несколько элементов. Тот факт, что один элемент всегда открыт, а другой элемент может разворачиваться и сворачиваться, не имеет значения в представлении содержимого, так как он предназначен для отображения данных или содержимого, которого отображается пользователю.

Представление содержимого получается путем поиска элементов, у которых установлены оба свойства: IsControlElement и CurrentIsContentElement, и оба имеют значение TRUE, либо путем использования IUIAutomation::ContentViewWalker для получения интерфейса IUIAutomationTreeWalker, который применяется для навигации по дереву.

На следующих изображениях показаны различия между представлением элемента управления и представлением содержимого. На первом изображении показан простой комбинированный список с тремя элементами в выпадающем списке. На втором рисунке показано, как элементы пользовательского интерфейса выпадающего списка отображаются в представлениях управления и контента приложения UISpy.exe.

снимок экрана простого поля со списком с тремя элементами

снимок экрана приложения uispy с элементами управления и содержимым элементов раскрывающегося списка

концептуальные

создание объекта CUIAutomation

Получение элементов автоматизации пользовательского интерфейса

Основы автоматизации пользовательского интерфейса