В предыдущей статье мы рассмотрели определение WPF элементов. Проект автоматизации можно скачать по ссылке GitHub.
WinForms elements manipulation with TestStack White
Класс MessageBox.cs представляет объявление конструктора окна сообщений WinForms, пару контролов и действия над ними.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
using System.Windows.Automation; using White.Core.UIItems; using White.Core.UIItems.Finders; using White.Core.UIItems.WindowItems; namespace SampleApp.Tests.Framework.Elements { public class MessageBox { private Window win; public MessageBox(Window window) { win = window; } private Button Button_OK { get { return win.Get<Button>( SearchCriteria.ByControlType(ControlType.Button). AndByText("OK")); } } private Label Label_Text { get { return win.Get<Label>( SearchCriteria.ByControlType(ControlType.Text)); } } public void ClickOkButton() { Button_OK.Click(); } public string GetText() { return Label_Text.Text; } } } |
MessageBox следует особенностям паттерна Object. Элементы являются приватными (private) свойствами. Действия над ними – общедоступные (public) методы.
Конструктор класса принимает объект текущего окна. Элементы находятся с помощью фреймворка White:
1 2 |
public virtual T Get<T>(SearchCriteria searchCriteria) where T : UIItem; |
SearchCriteria
SearchCriteria используется для поиска элементов. Поиск можно осуществлять по следющим свойствам (критериям): Text, ControlType, AutomationId, NativeProperty, Framework. Отсюда возникают некоторые проблемы в использовании фреймворка White для автоматизации комплексных приложений. Может быть несколько текстовых полей с одним и тем же типом (ByControlType == Edit) и без текста (AndByText == “”). Это можно решить путем индексирования при вызове таких полей.
UISpy
Поиск правильного SearchCriteria выполняется с помощью инструмента UIAVerify. Можно скачать по ссылке.
“Dialog” – это окно сообщения, которое наследуется от “MainWindow”. Оно имеет пустое название и два элемента: кнопку OK и текстовое сообщение. Изображение выше показывает позицию сообщения. Его тип ControlType == ControlType.Text. Одного этого достаточно для нахождения элемента, потому что на окне сообщения только одно текстовое поле. Теперь мы можем возвращать текст сообшения и сравнивать с ожидаемым результатом. Кнопка OK находится с помощью поисковых критериев ControlType и text. В случае разных локализаций следует использовать только ControlType.
Таким образом мы определили все объекты WinForms и WPF. В следующей статье мы рассмотрим, как структурировать их вызовы в тестах.