Microsoft UI Automation (UIA) — это интерфейс прикладного программирования (API), который позволяет получать доступ, идентифицировать и управлять элементами пользовательского интерфейса (UI) другого приложения. [1] [2]
UIA нацелен на обеспечение доступности пользовательского интерфейса и является преемником Microsoft Active Accessibility . Он также облегчает автоматизацию тестирования графического интерфейса и является движком, на котором основаны многие инструменты автоматизации тестирования . Инструменты RPA также используют его для автоматизации приложений в бизнес-процессах .
Поставщики недвижимости UIA поддерживают программы Win32 и .NET .
Последняя спецификация UIA находится в составе Microsoft UI Automation Community Promise Specification . Microsoft утверждает, что переносимость на платформы, отличные от Microsoft Windows, была одной из целей ее разработки. С тех пор она была перенесена на Mono . [3]
В 2005 году Microsoft выпустила UIA в качестве преемника фреймворка MSAA .
Managed UI Automation API был выпущен как часть .NET Framework 3.0 . Собственный UI Automation API (поставщик) включен как часть Windows Vista и Windows Server 2008 SDK и также распространяется с .NET Framework.
UIA доступен «из коробки» в Windows 7 как часть Windows Automation API 3.0 и как отдельная загрузка для Windows XP, Windows Vista и Windows Server 2003 и 2008. [4]
Будучи преемником MSAA, UIA ставит перед собой следующие цели:
На стороне клиента UIA предоставляет интерфейс .NET в UIAutomationClient.dll
сборке и интерфейс COM , реализованный непосредственно в UIAutomationCore.dll
.
На стороне сервера UIAutomationCore.dll
внедряется во все или выбранные процессы на текущем рабочем столе для выполнения извлечения данных от имени клиента. DLL также может загружать плагины UIA (называемые поставщиками ) в свой хост-процесс для извлечения данных с использованием различных методов.
UIA имеет четыре основных компонента: поставщика и клиента, как показано в следующей таблице.
UIA представляет каждую часть пользовательского интерфейса клиентским приложениям как элемент автоматизации. Элементы содержатся в древовидной структуре, где рабочий стол является корневым элементом.
Объекты Automation Element раскрывают общие свойства элементов пользовательского интерфейса, которые они представляют. Одним из этих свойств является тип элемента управления, который определяет его базовый внешний вид и функциональность как единой узнаваемой сущности (например, кнопки или флажка).
Кроме того, элементы раскрывают шаблоны управления, которые предоставляют свойства, специфичные для их типов управления. Шаблоны управления также раскрывают методы, которые позволяют клиентам получать дополнительную информацию об элементе и предоставлять входные данные.
Клиенты могут фильтровать необработанный вид дерева как вид управления или вид содержимого. Приложения также могут создавать пользовательские виды.
В дереве UIA есть корневой элемент, представляющий текущий рабочий стол, а дочерние элементы которого представляют окна приложений. Каждый из этих дочерних элементов может содержать элементы, представляющие части пользовательского интерфейса, такие как меню, кнопки, панели инструментов и списки. Эти элементы, в свою очередь, могут содержать другие элементы, такие как элементы списка.
Дерево UIA не является фиксированной структурой и редко встречается в полном объеме, поскольку может содержать тысячи элементов. Части дерева строятся по мере необходимости, и дерево может претерпевать изменения по мере добавления, перемещения или удаления элементов.
Типы элементов управления UIA — это общеизвестные идентификаторы, которые можно использовать для указания того, какой тип элемента управления представляет собой конкретный элемент, например, поле со списком или кнопка.
Наличие известного идентификатора позволяет устройствам вспомогательных технологий (AT) легче определять, какие типы элементов управления доступны в пользовательском интерфейсе (UI) и как взаимодействовать с элементами управления. Удобочитаемое представление информации о типе элемента управления UIA доступно в качестве LocalizedControlType
свойства, которое может быть настроено разработчиками элементов управления или приложений.
Шаблоны элементов управления предоставляют способ категоризации и раскрытия функциональности элемента управления независимо от типа элемента управления или его внешнего вида.
UIA использует шаблоны управления для представления общих поведений управления. Например, Invoke
шаблон управления используется для элементов управления, которые могут быть вызваны (например, кнопки), а Scroll
шаблон управления используется для элементов управления, которые являются прокручиваемыми окнами просмотра (например, списки, представления списков или поля со списком). Поскольку каждый шаблон управления представляет отдельную функциональность, их можно объединить для описания полного набора функций, поддерживаемых определенным элементом управления.
Поставщики UIA предоставляют свойства элементов UIA и шаблонов управления. Эти свойства позволяют клиентским приложениям UIA обнаруживать информацию о частях пользовательского интерфейса (UI), особенно об элементах управления, включая как статические, так и динамические данные.
Уведомление о событиях UIA является ключевой функцией вспомогательных технологий (AT), таких как экранные дикторы и экранные лупы. Эти клиенты UIA отслеживают события, которые инициируются поставщиками UIA, которые происходят в пределах UIA, и используют эту информацию для уведомления конечных пользователей.
Эффективность повышается за счет того, что приложениям-поставщикам разрешается выборочно вызывать события в зависимости от того, подписаны ли на эти события какие-либо клиенты, или не вызывать их вообще, если ни один клиент не прослушивает какие-либо события.
UIA раскрывает текстовое содержимое, включая атрибуты формата и стиля, текстовых элементов управления на платформах, поддерживаемых UIA. Эти элементы управления включают, помимо прочего, Microsoft .NET Framework TextBox
, а RichTextBox
также их эквиваленты Win32.
Отображение текстового содержимого элемента управления осуществляется с помощью шаблона управления TextPattern
, который представляет содержимое текстового контейнера как текстовый поток. В свою очередь, TextPattern
требует поддержки класса TextPatternRange
для отображения атрибутов формата и стиля. TextPatternRange
поддерживает TextPattern
, представляя непрерывный текстовый диапазон в текстовом контейнере с конечными точками Start
и End
. Несколько или несвязанных текстовых диапазонов могут быть представлены более чем одним TextPatternRange
объектом. TextPatternRange
поддерживает такие функции, как клонирование, выбор, сравнение, извлечение и обход.
UIA также может быть полезен в качестве фреймворка для программного доступа в сценариях автоматизированного тестирования. Помимо предоставления более совершенных решений для доступности, он также специально разработан для предоставления надежной функциональности для автоматизированного тестирования.
Программный доступ обеспечивает возможность имитировать посредством кода любое взаимодействие и опыт, предоставляемые традиционными взаимодействиями пользователя. UIA обеспечивает программный доступ посредством пяти компонентов:
UIA изначально был доступен в Windows Vista и Windows Server 2008, а также стал доступен в Windows XP и Windows Server 2003 как часть .NET Framework 3.0. Он был интегрирован со всеми последующими версиями Windows, вплоть до Windows 7 включительно . [5]
Помимо платформ Windows, проект Olive (который представляет собой набор дополнительных библиотек для ядра Mono, нацеленных на поддержку .NET Framework) включает подмножество WPF ( PresentationFramework
и WindowsBase
) и UI Automation. [6]
Проект Novell Mono Accessibility представляет собой реализацию спецификаций UIA Provider и Client, ориентированных на фреймворк Mono. Кроме того, проект обеспечивает мост к Accessibility Toolkit (ATK) для вспомогательных технологий Linux (AT). Novell также работает над мостом для AT на основе UIA для взаимодействия с приложениями, реализующими ATK. [7]
AriaRole
и AriaProperties
свойства могут предоставлять доступ к значениям атрибутов ARIA, соответствующим элементу HTML (который может быть представлен как элемент автоматизации веб-браузерами). Также доступно общее сопоставление атрибутов ARIA с UIA. [3]