Microsoft UI Automation (UIA) - это интерфейс прикладного программирования (API) который позволяет получать доступ, идентифицировать и управлять элементами пользовательского интерфейса (UI) другого приложения.
UIA нацелен на обеспечение доступности UI и является преемником Microsoft Активная доступность. Он также упрощает автоматизацию тестирования графического интерфейса пользователя и является механизмом, на котором основаны многие инструменты автоматизации тестирования. Инструменты RPA также используют его для автоматизации приложений в бизнес-процессах.
Поставщики свойств UIA поддерживают программы как Win32, так и .NET.
Последняя спецификация UIA входит в состав Microsoft UI Automation Community Promise Specification. Microsoft утверждает, что переносимость на другие платформы, кроме Microsoft Windows, была одной из целей ее разработки. С тех пор он был перенесен на Mono.
В 2005 году Microsoft выпустила UIA в качестве преемника MSAA framework.
Управляемый API автоматизации пользовательского интерфейса был выпущен как часть .NET Framework 3.0. Собственный 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.
Как преемник MSAA, UIA стремится достичь следующих целей:
На стороне клиента UIA предоставляет интерфейс.NET в сборке UIAutomationClient.dll
и интерфейс COM, реализованный непосредственно в UIAutomationCore.dll
.
На стороне сервера UIAutomationCore.dll
внедряется во все или выбранные процессы на текущем рабочем столе для выполнения извлечения данных от имени клиента. DLL также может загружать плагины UIA (называемые поставщиками) в свой хост-процесс для извлечения данных с использованием различных методов.
У МАУ есть четыре основных компонента поставщика и клиента, как показано в следующей таблице.
Компонент | Описание |
---|---|
UIAutomationCore (UIAutomationCore.dll и иждивенцы) | Базовый код (иногда называемый ядром UIA), который обрабатывает связь между поставщиками и клиентами. UI Automation Core также предлагает интерфейсы API провайдера и клиента для неуправляемых приложений и клиентов; Неуправляемые приложения (клиенты или поставщики) не требуют перечисленных ниже управляемых сборок. |
API управляемого поставщика (UIAutomationProvider.dll и зависимые) | Набор определений и функций интерфейса , которые реализуются приложениями управляемого поставщика UIA. Провайдеры - это объекты, которые предоставляют информацию об элементах пользовательского интерфейса и реагируют на программный ввод. |
Управляемый клиентский API (UIAutomationClient.dll и зависимые) | Набор определений интерфейсов и функций для управляемых клиентских приложений UIA. |
UIAutomationClientsideProviders.dll | Набор реализаций поставщика UIA для устаревших элементов управления Win32 и приложений MSAA. Этот клиентский поставщик по умолчанию доступен для управляемых клиентских приложений. |
UIA предоставляет клиентским приложениям каждую часть пользовательского интерфейса как элемент автоматизации. Элементы содержатся в древовидной структуре с рабочим столом в качестве корневого элемента.
Объекты элементов автоматизации раскрывают общие свойства элементов пользовательского интерфейса, которые они представляют. Одним из этих свойств является тип элемента управления, который определяет его базовый внешний вид и функциональность как единый узнаваемый объект (например, кнопку или флажок).
Кроме того, элементы предоставляют шаблоны элементов управления, которые предоставляют свойства, специфичные для их типов элементов управления. Шаблоны управления также предоставляют методы, позволяющие клиентам получать дополнительную информацию об элементе и предоставлять ввод.
Клиенты могут фильтровать необработанное представление дерева как представление управления или представление содержимого. Приложения также могут создавать собственные представления.
В дереве 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.
. Помимо платформ Windows, проект Olive (который представляет собой набор дополнительных библиотек для ядра Mono с целью поддержки.NET Framework) включает подмножество WPF (PresentationFramework
и WindowsBase
) и автоматизации пользовательского интерфейса.
Проект Novell Mono Accessibility - это реализация спецификаций поставщика и клиента UIA, предназначенная для Моно-фреймворк. Кроме того, проект обеспечивает мост к Accessibility Toolkit (ATK) для вспомогательных технологий (AT) Linux. Novell также работает над мостом для AT на базе UIA для взаимодействия с приложениями, реализующими ATK.
AriaRole
и AriaProperties
properties могут предоставлять доступ к значениям атрибута ARIA, соответствующим элементу HTML (который может быть представлен веб-браузерами как элемент автоматизации). Также доступно общее сопоставление атрибутов ARIA с UIA..