Добрый день.
Я занимаюсь автоматизацией тестирования ui приложений.
У нас есть приложение WPF. Тестирую при помощи
CodedUITest, поиск элементов при помощи FindByName.
После внедрения Docking у нас появились табы, но появилась проблема с обновлением информации в табе.
Например:
Открываем область с определенным набором контролов (открывается в мастер табе), работаем с этими контролами. Затем открываем область с другим набором контролов (область открывается в том же самом табе, то есть мастер таб перерисовывается). А в коде не видно, что элементы в табе изменились.
Раньше это решалось при помощи постоянного переоткрытия табов, коряво но работало.
Недавно разработчики для ускорения работы гридов внедрили подмен темплейтов. И теперь возникла такая проблема:
допустим в табе есть выпадающий список(popup) и кнопка. Сначала работаем с popup, выбираем значение, а дальше жмем кнопку. Но при попытке нажать кнопку вываливается ElementNotAvailableException.
Если сначала нажать на кнопку, то все работает. Разработчики говорят, что это как раз связано с подменом темплейтов, а нам надо научиться обновлять данные в табе, чтобы отлавливать новое состояние.
Интересно что тесты падают не всегда.
Собственно вопрос:
просмотрел много форумов, но так и не нашел, как обновлять информацию в табе. Разработчики говорят, что это должно быть реализовано в тестах. Для примера выкладываю часть кода. Выбор элемента в выпадающем списке и нажатие на кнопку.
internal void Choose(AutomationElement element, string value)
{
if (NameProperty(element) != value)
{
Open(element);
AutomationElement valueInPopup = FindByName(PART_ListBox(), value);
ChooseValueInPopup(valueInPopup, value);
}
}
private void ChooseValueInPopup(AutomationElement element, string value)
{
AutomationElement valueInPopup = FindByName(element, value);
LeftClickElement(valueInPopup);
Thread.Sleep(1000);
}
private void ClickSaveEventButton()
{
AutomationElement saveButton = FooterSaveButton();
LeftClickElement(saveButton);
WaitBusyElementWithoutParameter(saveButton, BusyIndicator);
}
Очень нужна помощь. Заранее благодарен.