1

Я только что начал с Microsoft Test Manager 2015 и создал два тестовых примера.Test Runner не может найти элементы управления во время воспроизведения

Первый включает в себя щелчок по значку в трее и выбор записи оттуда - это прекрасно работает.

Второй случай немного сложнее, я хотел заполнить форму в окне WPF и нажать несколько кнопок.

Запись прошла без проблем, но воспроизведение не работает вообще. Он должен начинаться с выбора TabItem, выбора другого TabItem, который находится внутри предыдущего выбранного TabItem, а затем заполнить текстовые поля и нажать кнопку и подтвердить два диалога сообщений.

Проблема в том, что TestRunner не может найти какой-либо элемент управления. Даже если я выберу правильный TabItem и просто попробую выполнить один из шагов «enter someText here», это займет некоторое время, а затем выбрасывает исключение на моем лице, которое, грубо говоря, говорит, что повторение выбранного шага не может быть завершена, потому что не удалось найти элемент управления, соответствующий свойствам поиска (?). Затем следует a Список:

TechnologyName: 'UIA' 
FrameworkId: 'WPF' 
ControlType: 'TabPage' 
AutomationId: 'sometabname' 

все это правильно. Если я попытаюсь выполнить другой тестовый шаг, он говорит в основном то же самое, но вместо «ControlType: TabPage» он говорит «ControlType: Edit».

Я не уверен, как действовать дальше. Я сделал некоторые поиски, но все, что я мог найти, это вопросы о настройке/настройке UIAutomation, но насколько я могу судить, я не могу влиять/контролировать это непосредственно в MTM.

редактировать

После упрощения теста «случая» (просто нажмите на кнопку прерывания, которая помещается непосредственно в Window/первой сетке) и редактирование файла mtm.exe.config и позволяющую трассировке/протоколирование I получил это из соответствующего логфайл:

mtm.exe, Playback - [WARNING] Internal warning: Target element "[UIA]FrameworkId='WPF' && ControlType='Button' && AutomationId='closeWithoutSave'" was not found, so all intermediate elements were ignored. An incorrect element that matches target element Id can be found as the result. Verify that all intermediate elements in QueryId have valid and unique Ids 
mtm.exe, Playback - [WARNING] Internal warning: Search failure: [UIA]FrameworkId='WPF' && ControlType='Button' && AutomationId='closeWithoutSave' | Performed (4) searches, UI element not found 
mtm.exe, Playback - {1} [FAILED] Function ElementFetcher::FindScreenElement failed to locate UI element (;[UIA]FrameworkId='WPF' && ControlType='Button' && AutomationId='closeWithoutSave') (Das angegebene Objekt wurde nicht gefunden.) 

что такое странное в том, что я даже установить Automation.AutomationID на эту кнопку, и он до сих пор не удалось. Кроме того, я не уверен, что это правильно, но поиск, похоже, не включает имя/automationID окна, в котором есть эта кнопка. Поскольку в этот момент в приложении открыто два окна, я мог представить, что это проблема.

ответ

1

Я проверил тест пользовательского интерфейса, который был сгенерирован MTM, загрузив его в проект Coded UI Test Project. Я открыл карту управления пользовательским интерфейсом и увидел, что не так:

Навигация по TabControl/TabPage был сгруппирован в том же Окне, что и ContextMenu TrayIcon.

Причина в том, что вместо использования свойства Name окна WPF, MTM/кодированные пользовательские интерфейсы используют свойство Title как идентификатор окна (wtf?).

Решение:

Установка свойства Названия моего окно конфигурации WPF для Configuration и переделка затрагиваемых шагов теста решить эту проблему.

Подсказка для людей с проблемы похоже: Он также может помочь увеличить значение MaxLevelsForItemContainer в mtm.exe.config файле, который находится в Common7\IDE вашей папки Визуальной установок Studio.