Предыдущая статьяавтоматизация пользовательского интерфейса --- Microsoft пользовательский интерфейс Automationсередина,Представляем пользовательский интерфейс Что может автоматизация и с помощью Inspect.exe Для инструмента завершена демо-версия, имитирующая операции щелчка. В статье окончание также выдвинуты некоторые собственные идеи и предложено использовать пользовательский интерфейс. Automation — это платформа для автоматизации тестирования пользовательского интерфейса. В конце концов, идеи — это всего лишь идеи, и их еще предстоит воплощать в жизнь, шаг за шагом.
Целью этой статьи является подробное изучение базовых знаний в области автоматизации пользовательского интерфейса.
Как упоминалось в предыдущей статье, UIAutomation реализует программный доступ через пять компонентов:
Далее изучите одно за другим. Следующий контент переведен из официальных документов Microsoft (https://learn.microsoft.com/en-us/dotnet/framework/ui-automation/ui-automation-fundamentals).
Деревья автоматизации пользовательского интерфейса можно фильтровать, чтобы создавать только те, которые относятся к конкретному клиенту. AutomationElement
Вид на объект. Такой подход позволяет клиентам настраивать структуру, представленную посредством автоматизации пользовательского интерфейса, в соответствии со своими конкретными потребностями.
У клиентов есть два способа настройки представлений: с помощью области видимости и фильтрации. Область определяет область представления, начиная с базового элемента: например, приложению может потребоваться найти только непосредственные дочерние элементы рабочего стола или все дочерние элементы окна приложения. Фильтрация определяет типы элементов, которые будут включены в представление.
Поставщики автоматизации пользовательского интерфейса поддерживают фильтрацию, определяя свойства элементов, включая IsControlElementProperty
и IsContentElementProperty
свойство.
автоматизация пользовательского интерфейса Предусмотрено три представления по умолчанию.:«Оригинальный вид»,«Просмотр управления»,«Просмотр контента»。
Эти представления определяются на основе типа выполняемой фильтрации; область действия любого представления определяется приложением. Кроме того, приложения могут применять к свойствам другие фильтры, например включать в представление элементов управления только включенные элементы управления;
Исходное представление дерева автоматизации пользовательского интерфейса основано на рабочем столе как корневом. AutomationElement
Полное дерево объектов. Исходное представление точно соответствует собственной программной структуре приложения и поэтому является наиболее подробным из доступных представлений. Это также основа, на которой строятся другие взгляды. Поскольку представление зависит от базовой инфраструктуры пользовательского интерфейса, исходное представление кнопки WPF будет отличаться от исходного представления кнопки Win32.
Путем поиска элементов без указания атрибутов или использования RawViewWalker
Просмотрите дерево, чтобы получить исходный вид.
AutomationElement elementNode = TreeWalker.RawViewWalker.GetFirstChild(AutomationElement.RootElement);
Представление управления деревом автоматизации пользовательского интерфейса упрощает задачу продуктов вспомогательных технологий, описывающих пользовательский интерфейс для конечных пользователей и помогающих конечным пользователям взаимодействовать с приложением, поскольку оно близко соответствует структуре пользовательского интерфейса, воспринимаемой конечным пользователем.
Представление управления является подмножеством исходного представления. Он включает в себя все элементы пользовательского интерфейса в исходном представлении, которые, по мнению пользователя, являются интерактивными или вносят вклад в логическую структуру элементов управления в пользовательском интерфейсе.
Элементы пользовательского интерфейса, которые вносят вклад в логическую структуру пользовательского интерфейса, но сами по себе не являются интерактивными, имеют заголовок представления списка.、Панель инструментов、Меню и строка состояния.
Неинтерактивные элементы, которые используются только для макетирования или оформления, не отображаются в представлении управления. Например, панель, которая не содержит собственной информации и используется только для размещения элементов управления в диалоговом окне.
Неинтерактивные элементы, например, видимые в представлении управления, содержат графику, содержащую информацию, и статический текст в диалоговых окнах.
Неинтерактивные элементы, содержащиеся в представлении элемента управления, не могут получить фокус клавиатуры.
С помощью поиска IsControlElement
Свойство настроено на true
элемент или использовать ControlViewWalker
Просмотрите дерево, чтобы получить представление об элементе управления.
AutomationElement controlViewElementNode = TreeWalker.ControlViewWalker.GetFirstChild(AutomationElement.RootElement);
Представление содержимого дерева автоматизации пользовательского интерфейса является подмножеством представления элемента управления.
Он содержит элементы пользовательского интерфейса, которые передают реальную информацию в пользовательском интерфейсе, включая элементы пользовательского интерфейса, которые могут получать фокус клавиатуры, и некоторый текст, который не является меткой на элементе пользовательского интерфейса. Например, значения в раскрывающемся списке будут отображаться в представлении содержимого, поскольку они представляют информацию, которую потребляет конечный пользователь.
существовать просмотр контента,Поля со списком и списки представлены как набор элементов пользовательского интерфейса.,Можно выбрать один или несколько элементов.
существовать просмотр контента,Один всегда включен,А то, что другой можно развернуть и сложить, не имеет значения,Потому что он предназначен для отображения данных или контента, представленного пользователю.
С помощью поиска IsContentElement
Свойство настроено на true
элемент или использовать ContentViewWalker
Просмотрите дерево, чтобы просмотреть содержимое.
AutomationElement ContentViewElementNode = TreeWalker.ContentViewWalker.GetFirstChild(AutomationElement.RootElement);
Элементы автоматизации пользовательского интерфейса могут представлять собой различные элементы пользовательского интерфейса, такие как окна, кнопки, текстовые поля, флажки, списки, меню и т. д. Каждый элемент имеет уникальный идентификатор, называемый AutomationID
,его можно использовать для поискаиэлементы управления。Например Имитация кликов пользователя、Введите текст、Выберите параметры、Получить элементы интерфейсасвойствождать。
каждыйсвойствовсе состоят из цифриидентификатор имени。свойство Имя предназначено только для отладки.идиагноз。Провайдер использует номераIDдля идентификации входящегосвойствопросить。Однако,Клиентские приложения используют только 「AutomationProperty」 чтобы определить свойство, которое они хотят получить,「AutomationProperty」 Инкапсулированные числа и имена.
представляет определенный атрибут 「AutomationProperty」 Объекты доступны в виде полей в различных классах. По соображениям безопасности поставщик автоматизации пользовательского интерфейса удален из Uiautomationtypes.dll
Эти объекты получены из отдельного набора классов, содержащихся в .
В следующей таблице содержатся AutomationPropertyIDs
Класс классифицирует атрибуты.
Тип атрибута | Клиент получает идентификатор от | Провайдер получает идентификатор от |
---|---|---|
Свойства, общие для всех элементов (см. таблицу ниже) | AutomationElement | AutomationElementIdentifiers |
положение окна закрепления | DockPattern | DockPatternIdentifiers |
Состояние расширяемых и свернутых элементов | ExpandCollapsePattern | ExpandCollapsePatternIdentifiers |
Свойства элемента в сетке | GridItemPattern | GridItemPatternIdentifiers |
Свойства сетки | GridPattern | GridPatternIdentifiers |
Просмотр когдапередняя иподдержка элемента с несколькими представлениями | MultipleViewPattern | MultipleViewPatternIdentifiers |
Свойство элемента, который перемещается в диапазоне значений, например ползунка. | RangeValuePattern | RangeValuePatternIdentifiers |
Прокрутка свойств окна | ScrollPattern | ScrollPatternIdentifiers |
Состояние и контейнер выбираемого элемента (например, элемента в списке). | SelectionItemPattern | SelectionItemPatternIdentifiers |
Свойства элемента управления, содержащего выделение | SelectionPattern | SelectionPatternIdentifiers |
Заголовки столбцов и строк элемента таблицы. | TableItemPattern | TableItemPatternIdentifiers |
Заголовки столбцов и строк таблицы и методы | TablePattern | TablePatternIdentifiers |
Переключение состояния элемента управления | TogglePattern | TogglePatternIdentifiers |
Функциональность элементов, которые можно перемещать, вращать или изменять размер. | TransformPattern | TransformPatternIdentifiers |
значение элемента со значением и функция чтения/записи | ValuePattern | ValuePatternIdentifiers |
Функции и статус окон | WindowPattern | WindowPatternIdentifiers |
Здесь мы перечисляем только группировку по идентификации. Кроме того, есть еще группировка по характеристикам отображения, группировка по типу элемента, группировка по типу взаимодействия, группировка по поддержке режимов и т. д. Подробности смотрите в официальной документации Microsoft.
идентификатор атрибута | Доступ к собственности |
---|---|
AutomationIdProperty | AutomationId |
ClassNameProperty | ClassName |
FrameworkIdProperty | FrameworkId |
LabeledByProperty | LabeledBy |
NameProperty | Name |
ProcessIdProperty | ProcessId |
RuntimeIdProperty | GetRuntimeId |
NativeWindowHandleProperty | NativeWindowHandle |
Автоматизация пользовательского интерфейса использует шаблоны управления для представления общего поведения элементов управления. Например, вы можете использовать Invoke
Шаблон управления для управления элементами управления (например, кнопками), которые можно вызывать и использовать. Scroll
Режим управления для управления элементами управления с полосами прокрутки (например, списками, представлениями списков или полями со списком). Поскольку каждый режим управления представляет собой независимую функцию, их можно объединить для описания полного набора функций, поддерживаемых конкретным элементом управления.
режим управленияподдерживать Определение элементов управлениясередина Требуются доступные дискретные функцииметод、свойство、событиеисвязь。
Отношения между шаблоном управления и пользовательским интерфейсом аналогичны отношениям между интерфейсом и объектом модели компонентных объектов (COM). существуетCOM,Вы можете запросить объект, чтобы узнать, какие интерфейсы он поддерживает.,Эти интерфейсы затем используются для доступа к функциям. существует автоматизация пользовательского интерфейсасередина,автоматизация пользовательского Клиент может запросить элемент управления, какие режимы управления поддерживаются, а затем взаимодействовать с элементом управления через свойства, методы и структуры событий, предоставляемые режимом управления поддержкой. Например, для многострочных полей редактирования автоматизация. пользовательского поставщик интерфейса реализует IScrollProvider
。когдаклиент знает AutomationElement
поддерживать ScrollPattern
режим управлениячас,он может использоватьрежим управленияобщественныйсвойство、методисобытиедля управления элементом управления или доступа к информации об элементе управления。
Класс режима управления | Предоставить интерфейс программы | иллюстрировать |
---|---|---|
DockPattern | IDockProvider | Для элементов управления, которые можно закрепить в закрепляемом контейнере. Например, панель инструментов или палитра инструментов. |
ExpandCollapsePattern | IExpandCollapseProvider | Для элементов управления, которые можно развернуть или свернуть. Например, элементы меню в приложении, например меню «Файл». |
GridPattern | IGridProvider | Элементы управления для поддержки функций сетки, таких как изменение размера и перемещение указанных ячеек. Microsoft Word Microsoft Word Microsoft Word Microsoft Word формат. |
GridItemPattern | IGridItemProvider | Для элементов управления, которые имеют ячейки внутри сетки. Отдельные ячейки должны пользоваться поддержкой GridItem модель. Например Microsoft Windows Каждая ячейка в подробном представлении Explorer. |
InvokePattern | IInvokeProvider | Используется для элементов управления, которые можно вызвать, например кнопок. |
MultipleViewPattern | IMultipleViewProvider | Используется для элементов управления, которые переключаются между несколькими представлениями одного и того же набора информации, данных или дочерних элементов. Например,существуют управление представлением списка,Доступны данные для миниатюр, Плитка, икона, Список или подробный просмотр. |
RangeValuePattern | IRangeValueProvider | Используется для элементов управления, имеющих диапазон значений, которые можно применить к элементу управления. Например, элемент управления счетчиком, содержащий год, может иметь 1900 приезжать 2010 диапазон года, в то время как другой элемент управления счетчиком, представляющий месяцы, будет иметь диапазон от 1 приезжать 12 диапазон месяцев. |
ScrollPattern | IScrollProvider | Используется для прокручиваемых элементов управления. Например,Когда элемент управления имеет полосу прокрутки и информация, хранящаяся в видимой области элемента управления, превышает информацию, которая может быть отображена.,активен. |
ScrollItemPattern | IScrollItemProvider | Используется для элемента управления, элементы которого находятся в прокручиваемом списке. Например,элемент управления списком,Элемент управления содержит отдельные элементы в прокручиваемом списке.,Например, управление полем со списком. |
SelectionPattern | ISelectionProvider | Используется для выбора элементов управления контейнером. Например, список и поле со списком. |
SelectionItemPattern | ISelectionItemProvider | Используется для выбора отдельных элементов в элементе управления контейнера.,нравиться Поле списка и поле со списком. |
TablePattern | ITableProvider | Используется для элементов управления с информацией о сетке и заголовке. Например Microsoft Excel рабочий лист. |
TableItemPattern | ITableItemProvider | Используется для элементов в таблицах. |
TextPattern | ITextProvider | Отредактируйте элемент управления и документ для отображаемой текстовой информации. |
TogglePattern | IToggleProvider | Для элементов управления, в которых можно переключать состояния. Например, флажок и выбираемый пункт меню. |
TransformPattern | ITransformProvider | для изменяемого размера、Органы управления движением и вращением. Шаблон управления Transform обычно используется дизайнерами.、форма、Графический редактор и приложение для рисования. |
ValuePattern | IValueProvider | Позволяет клиенту получать или устанавливать значение элемента управления, которое выходит за пределы определенного диапазона значений. Например, выбор даты и времени. |
WindowPattern | IWindowProvider | К Microsoft Windows Операционная система предоставляет информацию, специфичную для окна (базовая концепция). Примером элемента управления, являющегося окном, является окно приложения верхнего уровня (Microsoft Word、Microsoft Windows браузер ресурсов и т. д.), многодокументный интерфейс (MDI) дочернее окно и диалоговое окно. |
Microsoft автоматизация пользовательского Интерфейссобытие — ключевая особенность вспомогательных технологий, таких как программы чтения с экрана и экранные лупы. Эти автоматизации пользовательского интерфейс сопровождения клиентов путем автоматизации пользовательского интерфейсапровайдер сработалсобытие,Когда что-то происходит в когдаUI,Они используют эту информацию для уведомления конечных пользователей.
Это повышает эффективность, позволяя приложениям-провайдерам выборочно инициировать события в зависимости от того, подписаны ли на них какие-либо клиенты, или вообще не инициировать события, если ни один клиент не прослушивает какие-либо события.
События автоматизации пользовательского интерфейса бывают следующих типов. Для получения более подробной информации прочтите официальную документацию Microsoft.
событие | иллюстрировать |
---|---|
Изменения свойств | когда UI Возникает при изменении свойства или режима управления элемента автоматизации. Например, если клиенту необходимо отслеживать контроль флажка приложения, он может зарегистрироваться для прослушивания. ToggleState Изменения в атрибутах свойствсобытие。 Когда флажок установлен или снят, поставщик вызывает событие, и клиент предпринимает необходимые действия. |
Операции с элементами | когда от деятельности конечного пользователя или программирования UI Поднимается при изменении результата, например, при нажатии или передаче; InvokePattern Вызов кнопки. |
Структурные изменения | существовать UI автоматизациядерево Структурные Поднимается при изменении. Когда на твоем рабочем столе появляется что-то новое UI Результаты меняются, когда элементы становятся видимыми, скрытыми или удаленными. |
Глобальные изменения рабочего стола | когда возникает, когда происходит глобальная операция, связанная с клиентом,Например, когда фокус переключается с одного элемента на другой или когда окно закрывается. |
В этой статье перечислена только часть содержимого. Для получения более подробной информации прочтите официальную документацию Microsoft. Документация по-прежнему очень подробная, но в ней слишком мало примеров кода, и вам, возможно, придется найти ее самостоятельно.
В целом, я думаю, что некоторые простые автоматизированные тесты пользовательского интерфейса не должны вызвать проблем, но некоторые пользовательские элементы управления или сложные рабочие процессы могут потребовать некоторого размышления, и даже если вы хорошенько подумаете, вы, возможно, не сможете это сделать.
Давайте посмотрим.
❝Справочные ссылки https://learn.microsoft.com/en-us/dotnet/framework/ui-automation/using-ui-automation-for-automated-testing ❞