Автоматизация пользовательского интерфейса — как отличить отображаемое изображение

Я очень новичок в автоматизации пользовательского интерфейса и использую инструмент Inspect (инструмент Inspect.exe Microsoft), поэтому, пожалуйста, объясните.

У меня есть приложение UWP, показывающее представление списка, каждый элемент представления списка выглядит так

введите здесь описание изображения

Небольшой кружок в блоке изображения выше — это изображение цвета интерьера, представляющее собой круг сплошного цвета (черный, серый или коричневый).

Если я использую инструмент Inspect.exe и наведу указатель мыши на маленький кружок изображения InteriorColor, он покажет AutomationId = InteriorColorIcon, имя, которое я даю ему в своем XAML:

<Image x:Name="InteriorColorIcon" Source="{Binding InteriorColor, Converter={Static Resource InteriorColorImageConverter}"

Выше привязываемое свойство InteriorColor имеет строковый тип, и я использую преобразователь для преобразования этой строки в изображение правильного цвета.

Итак, если InteriorColor == "black", мой преобразователь возвращает изображение ресурса Black.png, например:

return new BitmapImage(new Uri("ms-appx:///Black.png"));

Я хотел бы написать автоматизацию пользовательского интерфейса, чтобы определить, является ли изображение маленького круга InteriorColorIcon изображением правильного цвета. Если я наведу курсор на изображение в инструменте Inspect.exe, он покажет его AutomationId = InteriorColorIcon, и это здорово.

Но как мне убедиться, что изображение черное, серое или коричневое?

Есть ли способ каким-то образом добавить свойство к изображению в XAML, которое может видеть инструмент Inspect и которое я могу использовать в своем тесте пользовательского интерфейса, чтобы убедиться, что отображаемое изображение является правильным изображением?

Я предполагаю, что определить цвет будет сложно, но есть ли способ добавить строковое свойство или что-то в этом роде, которое можно было бы использовать для этой цели?


person pixel    schedule 10.11.2017    source источник


Ответы (1)


Всегда устанавливайте AutomationProperties.Имя для изображения. Это необходимо для того, чтобы ваше изображение правильно читалось программой чтения с экрана. Имя автоматизации "InteriorColorIcon" является ошибкой специальных возможностей в вашем приложении. Это должно быть что-то более описательное, например «Черное изображение» (или что-то еще, на что указывает черное изображение). Точно так же вы можете установить AutomationProperties. AutomationId во что-то полезное для вашего тестирования.

См. Предоставление основной информации о специальных возможностях

<Image x:Name="InteriorColorIcon"
       AutomationProperties.Id="{Binding InteriorColor}"
       AutomationProperties.Name="{Binding InteriorColor}, Converter={Static Resource InteriorColorDescriptiveNameConverter}"
       Source="{Binding InteriorColor, Converter={Static Resource InteriorColorImageConverter}"

Если вы хотите проверить фактическое изображение, то это сложнее. Вам нужно будет сделать снимок экрана с местоположением изображения (см. UIA_BoundingRectanglePropertyId), а затем сравнить пиксели снимка с вашим эталонным изображением.

person Rob Caplan - MSFT    schedule 13.11.2017