Сегодня я изучаю среду автоматизации .NET UI. Итак, что я сделал до сих пор (ссылаясь на различные статьи)
У вас есть WinForm с элементами управления Listbox, PictureBox, TextBox и Button. Обратитесь к рисунку, пожалуйста:
У меня есть consoleapp, в котором есть все тестовые сценарии UI Automation или код, автоматизирующий тестирование пользовательского интерфейса winform.
Рабочая:
После выбора элемента из списка окно изображения загружает некоторое изображение и отображает его (код для загрузки находится в событии SelectedIndexChanged списка).
Ниже приведен код элемента управления Forms listBox:
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
textBox1.BackColor = Color.White;
pictureBox1.Image = imageCollection.ElementAtOrDefault(listBox1.SelectedIndex);
textBox1.Text = pictureBox1.Image.GetHashCode().ToString();
this.Refresh();
}
Теперь мой код сценария тестирования UIAutomation выглядит следующим образом: (показана только необходимая часть)
AutomationElement listBoxElement = mainFormWindowElement.FindFirst(TreeScope.Children,
new PropertyCondition(AutomationElement.AutomationIdProperty, "listBox1"));
Assert.IsNotNull(listBoxElement, "Cant find the listbox element");
AutomationElementCollection listBoxItems =
listBoxElement.FindAll(TreeScope.Children,new PropertyCondition(AutomationElement.ControlTypeProperty,ControlType.ListItem));
AutomationElement itemToSelectInListBox = listBoxItems[new Random().Next(0, listBoxItems.Count - 1)];
Object selectPattern = null;
if (itemToSelectInListBox.TryGetCurrentPattern(SelectionItemPattern.Pattern, out selectPattern))
{
(selectPattern as SelectionItemPattern).AddToSelection();
(selectPattern as SelectionItemPattern).Select();
}
После выполнения кода метод Select () работает, и элемент списка формы выбирается, как показано
:
Как вы можете видеть на изображении, элемент списка выбирается, но событие SelectedIndexChange не запускается, и окно рисунка не отражает изменения.
Так что любые указатели очень помогают:)
Спасибо