Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КонспЛекций_ГСиИО_Козак.doc
Скачиваний:
102
Добавлен:
06.12.2018
Размер:
8.64 Mб
Скачать

P4. Лекция № 14. Возможности uiAutomation

Библиотека классов UIAutomation. Исследование структуры пользовательского интерфейса приложений. Реализация надстроек для создания инструментов тестирования пользовательского интерфейса. Специфика в тестировании интерфейса пользователя на примере CoDeSys.

UI Automation (далее UIA) был разработан как преемник Microsoft Active Accessibility. Active Accessibility — это существующая среда, разработанная для обеспечения решения для создания элементов управления и специальных возможностей приложений. Active Accessibility не была разработана с автоматизацией тестирования несмотря на то, что он развился в эту роль из-за очень схожих требований специальных возможностей и автоматизации.

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

Очень интересна часть интерфейса API Microsoft UI Automation — отличная поддержка событий. Хотя можно установить обработчик ведения журнала для записи использования клавиатуры и мыши, нет ясного интерфейса API для получения уведомлений о том, на каком элементе управления находится фокус, когда окна открываются и закрываются и так далее.

Ключевой момент интерфейса API Microsoft UI Automation — все основано на типе элемента управления. Элементы класса AutomationElement «обертывают» каждый элемент управления, что дает возможность быстро определить, чем является конкретный каждый элемент управления на экране и каковы его функции. Раньше для такого уровня детализации требовалось коммерческое приложение. Одна из возможностей тестирования интерфейса пользователя, исчезнувшая из интерфейса API UI Automation — поддержка мыши. Ее нет совсем. Для большинства приложений это не является проблемой, поскольку шаблоны элементов управления обеспечивают аналогичную функциональность. В то же время при работе с приложением для рисования вы не получите никакой помощи в рисовании улыбающихся рожиц с помощью мыши.

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

Для того, чтобы автоматизировать Пользовательский интерфейс (User Interface - UI), разработчик приложения или элемента управления должен посмотреть, какие действия конечного пользователя могут выполняться над объектом UI при использовании взаимодействия со стандартной клавиатурой и мышью. Как только эти ключевые действия были определены, соответствующие Модель автоматизации пользовательского интерфейса шаблоны управления (т. е. шаблоны управления, отражающие функциональные возможности и поведение элемента UI) должны быть реализованы в элементе управления. Например, взаимодействие пользователя с элементом управления combo box (таким, как окна выполнения) обычно включает развертывание и свертывание поля со списком для скрытия или отображения списка элементов, выбор элемента из этого списка или добавление нового значения с помощью ввода с клавиатуры.

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

Пример кода на С# // взятие корневого элемента

AutomationElementCollection desktopChildren =

AutomationElement.RootElement.FindAll(

TreeScope.Children, Condition.TrueCondition);

Дерево UIA не является фиксированной структурой и редко отображается полностью, так как оно может содержать тысячи элементов. Его части создаются по необходимости, и дерево может претерпевать изменения при добавлении, перемещении или удалении элементов. Дерево UIA может быть отфильтровано для создания представлений, содержащих только те объекты AutomationElement, которые соответствуют конкретному клиенту. Этот подход позволяет клиентам настроить структуру, представленную с помощью UIA , для их конкретных нужд. Клиент может настроить представление двумя способами: определением области и фильтрацией. Определение области — это определение пространства представления, начиная от базового элемента: например, приложению может требоваться найти только дочерний элемент рабочего стола или всех потомков окна приложения. Фильтрацией является определение типов элементов, которые должны быть включены в это представление. Поставщики модели автоматизации пользовательского интерфейса поддерживают фильтрацию с помощью определения свойств элементов, включая свойства IsControlElementProperty и IsContentElementProperty.

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