Как однозначно идентифицировать элементы управления в закодированном пользовательском интерфейсе в .Net C#

#c# #coded-ui-tests #uniqueidentifier

#c# #coded-ui-тесты #уникальный идентификатор

Вопрос:

Мы помогаем тестировщикам, которые пишут тесты CodedUI для нашего проекта. Проблема, с которой они сталкиваются, заключается в том, что несколько динамически добавляемых элементов управления не имеют уникального значения для определения того, что есть что.

Мое теоретическое решение состояло в том, чтобы добавить общедоступное пользовательское свойство с именем «CodedUiName», чтобы тестировщики могли сопоставлять элемент управления с этим именем. Я сделал это, установив интерфейс ICodedUI поверх элемента управления и предоставив вышеупомянутое свойство.

Я проверил это свойство с помощью редактора объектов HawkEye, и оно действительно есть, но когда тестировщики делают то же самое в CodedUI, свойство не отображается.

Есть ли у них способ легко получить доступ к «CodedUiName».

Мы хотели бы, чтобы это было хорошее масштабируемое решение для любых проблемных элементов управления, с которыми мы можем столкнуться при написании тестов CodedUI.

Комментарии:

1. Не могли бы вы представить свой код, пожалуйста?

2. можете ли вы добавить логическое имя к каждому динамически добавляемому элементу управления?

3. Разве нет идентификатора, который вы должны добавлять к каждому элементу управления? Что-то вроде AutomationID ?

4. Я не уверен, как работает тест CodedUI, но, чтобы отслеживать мои динамически созданные элементы управления, я использовал Dictionary<[key], Control> . В моем случае [key] это a Form . Значит, все Control ссылки находятся в одном «месте», на которое вы можете посмотреть? (не уверен, поможет ли это) // Кроме того, разве нельзя было бы просто использовать Control.Equals(Control) , чтобы отличить их друг от друга? Используя их ссылки на память в качестве идентификаторов?

5. Установите «Свойства автоматизации. AutomationIdProperty» для каждого элемента управления.