CodedUi: как выполнить поиск свойства окна, когда его название заголовка постоянно меняется?

Я пытаюсь автоматизировать щелчок по элементу управления в окне, и в зависимости от того, что выбрано в окне, изменяется плитка окна. Например, когда-то это «abc», во второй раз это будет «123». Общей строки нет в заголовке окна для двух сценариев

Когда я записал закодированный тест пользовательского интерфейса, он принял название «abc». Теперь я хочу как-то настроить тест, чтобы любой заголовок работал.

Как я могу это сделать?

Любая помощь будет отличной.


person Pradeep    schedule 11.01.2012    source источник


Ответы (3)


Вы можете изменить searchProperties во время выполнения, например:

myUITestControl.SearchProperties.Remove(UITestControl.PropertyNames.Name); myUITestControl.SearchProperties.Add(UITestControl.PropertyNames.Name, "123");

Это должно быть сделано до первого поиска элемента управления. Так что, возможно, в ctor вашего тест-класса. (в качестве альтернативы вы также можете добавить «AlwaysSearch» в SearchConfigurtation UITestControl)

Привет Йоханнес

person Johannes    schedule 13.01.2012
comment
Это было очень полезно, эти свойства можно было изменить во время выполнения с отражением, что сделало тесты переносимыми на несколько экземпляров одного и того же приложения (с разными названиями и прочим) без ручного изменения свойств поиска. +1 - person ExtremeSwat; 22.07.2015

На самом деле не так много встроенных «хороших» опций с тестами CodedUI. Написание дюжины строк изменений свойств поиска для каждого тестового случая — это серьезная проблема, не говоря уже о том, что это подвержено ошибкам (забудьте изменить свойство, и тест сломается или замедлится). Невозможно использовать переменную в свойствах поиска, заданных в файле UIMap.designer, или, по крайней мере, я не смог придумать способ, который будет сохраняться после повторной генерации файла. Перемещение всего из файла конструктора также не является хорошим вариантом, поскольку элементы управления, похоже, не перемещаются вместе с методами, к которым они прикреплены.

Когда я столкнулся с проблемой, я в конечном итоге использовал отражение в UIMap и выполнил гигантский поиск во время выполнения и замену свойств поиска для каждого элемента управления. Не идеальное решение, но оно работает и избавило меня от написания большого количества индивидуальных изменений свойств поиска.

person stoj    schedule 17.01.2012

вы можете использовать объявленную переменную

переменная = "Значение"; (возможно даже с массивами) myUITestControl.SearchProperties[UITestControl.PropertyNames.Name] = Variable; myUITestControl.SearchProperties[UITestControl.PropertyNames.Name] = Variable[1];

или если вы знаете часть имени окна, вы можете использовать:

myUITestControl.SearchProperties.Add("Имя", "Значение", propertyExpressionOperator.Contains);

или myUITestControl.SearchProperties.Add(new PropertyExpression(WinWindow.PropertyNames.Name, "Value", PropertyExpressionOperator.Contains));

person Mordacaj    schedule 14.08.2014