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


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

Заметка

Эта документация предназначена для разработчиков .NET Framework, которые хотят использовать управляемые классы автоматизации пользовательского интерфейса, определенные в пространстве имен System.Windows.Automation. Последнюю информацию об автоматизации пользовательского интерфейса см. в разделе Windows Automation API:UI Automation.

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

Автоматизация пользовательского интерфейса предоставляет единую объектную модель, которая позволяет всем платформам пользовательского интерфейса предоставлять сложные и широкие функциональные возможности в доступной и легкой автоматизированной форме.

Автоматизация пользовательского интерфейса была разработана в качестве преемника Microsoft Active Accessibility. Active Accessibility — это существующая структура, предназначенная для обеспечения доступности управления и приложений. Активная доступность не была изначально разработана с учетом автоматизации тестирования, однако она развивалась в этой роли, поскольку требования к доступности и автоматизации очень похожи. Автоматизация пользовательского интерфейса, помимо предоставления более изысканных решений для специальных возможностей, также специально предназначена для обеспечения надежных функций для автоматизированного тестирования. Например, Active Accessibility использует единый интерфейс для предоставления сведений о пользовательском интерфейсе и сбора сведений, необходимых специальным средствам; Автоматизация пользовательского интерфейса разделяет эти две модели.

Поставщик и клиент должны реализовать автоматизацию пользовательского интерфейса, чтобы она была полезна как автоматизированное средство тестирования. Поставщики автоматизации пользовательского интерфейса — это такие приложения, как Microsoft Word, Excel и другие сторонние приложения или элементы управления на основе операционной системы Microsoft Windows. Клиенты автоматизации пользовательского интерфейса включают автоматизированные скрипты тестирования и вспомогательные технологические приложения.

Заметка

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

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

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

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

Заметка

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

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

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

Тип элемента управления автоматизации пользовательского интерфейса Платформа пользовательского интерфейса Конкретное свойство Платформы Свойство автоматизации пользовательского интерфейса
Кнопка Windows Presentation Foundation Содержание ИмяСвойство
Кнопка Win32 Заголовок ИмяСвойство
Образ HTML ALT ИмяСвойство

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

Сведения о реализации автоматизации UI в поставщике см. в разделе Поставщики автоматизации UI для управляемого кода. Сведения о реализации шаблонов элементов управления доступны на UI Automation Control Patterns и UI Automation Text Pattern.

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

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

Сложность, возникающая из автоматизированных приложений, заключается в синхронизации теста с динамическим целевым объектом. Например, элемент управления "Список", например один, содержащийся в диспетчере задач Windows, отображает список запущенных в настоящее время приложений. Поскольку элементы в поле списка динамически обновляются вне контроля тестового приложения, попытка повторить выбор определенного элемента в поле списка с какой-либо согласованностью невозможна. Аналогичные проблемы также могут возникнуть при попытке повторить простые изменения фокуса в пользовательском интерфейсе, который находится за пределами управления тестируемым приложением.

Программный доступ

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

Ключевые свойства для автоматизации тестирования

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

AutomationID

Уникально идентифицирует элемент автоматизации из его братьев и сестер. AutomationIdProperty не локализуется, в отличие от свойства, например NameProperty, который обычно локализован, если продукт поставляется на нескольких языках. См. использование свойства AutomationID.

Заметка

AutomationIdProperty не гарантирует уникальную идентичность в дереве автоматизации. Например, приложение может содержать элемент управления меню с несколькими элементами меню верхнего уровня, которые, в свою очередь, имеют несколько дочерних элементов меню. Эти вторичные пункты меню могут быть определены с помощью универсальной схемы, такой как "Item1, Item 2, Item3 и т. д." Это позволяет использовать повторяющиеся идентификаторы для дочерних элементов внутри пунктов меню на верхнем уровне.

Тип управления

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

ИмяСвойство

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

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

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

— UIAutomationClient.dll предоставляет доступ к клиентским API службы автоматизации пользовательского интерфейса.
— UIAutomationClientSideProvider.dll предоставляет возможность автоматизации элементов управления Win32. См. поддержку автоматизации пользовательского интерфейса для стандартных элементов управления.
— UIAutomationTypes.dll предоставляет доступ к конкретным типам, используемым в UI Automation.
Добавьте пространство имен System.Windows.Automation. Это пространство имен содержит все, что необходимо клиентам автоматизации пользовательского интерфейса для использования возможностей автоматизации пользовательского интерфейса, кроме обработки текста.
Добавьте пространство имен System.Windows.Automation.Text. Это пространство имен содержит все, что необходимо клиентам автоматизации пользовательского интерфейса для использования возможностей обработки текста этой службы.
Найдите интересующие элементы управления. Скрипты автоматического тестирования находят элементы автоматизации пользовательского интерфейса, представляющие интересующие элементы управления в дереве автоматизации.

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

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

— Используйте класс TreeWalker для прохождения всего дерева автоматизации пользовательского интерфейса или его подмножества.
— Отслеживание фокуса.
— Используйте hWnd элемента управления.
— Используйте расположение экрана, например расположение курсора мыши.

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

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

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

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

  • Inspect.exe — это графическое приложение пользовательского интерфейса (GUI), которое можно использовать для сбора информации об автоматизации UI как для разработки и отладки провайдеров, так и клиентов. Inspect.exe входит в пакет SDK для Windows.

  • MSAABridge предоставляет сведения об автоматизации пользовательского интерфейса клиентам Microsoft Active Accessibility. Основная цель объединения автоматизации пользовательского интерфейса с Active Accessibility — предоставить существующим клиентам Active Accessibility возможность взаимодействовать с любой платформой, которая реализовала автоматизацию пользовательского интерфейса.

Безопасность

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

См. также

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