UI自动化-如何区分正在显示的图像

UI Automation - How to distinguish image being displayed

我对 UI 自动化和使用 Inspect 工具(Inspect.exe Microsoft 工具)还很陌生,所以请解释一下。

我有一个显示列表视图的 UWP 应用程序,每个列表视图项如下所示

上面图像块中的小圆圈是 InteriorColor 图像,它是纯色圆圈(黑色、灰色或棕色)。

如果我使用 Inspect.exe 工具并将鼠标悬停在小圆圈 InteriorColor 图像上,它会显示 AutomationId = InteriorColorIcon,这是我在 XAML:

中给它起的名字
<Image x:Name="InteriorColorIcon" Source="{Binding InteriorColor, Converter={Static Resource InteriorColorImageConverter}"

以上,可绑定属性 InteriorColor 是字符串类型,我使用转换器将该字符串转换为正确颜色的图像。

因此,如果 InteriorColor == "black",我的转换器 returns 资源图像 Black.png 如:

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

我想编写 UI 自动化来检测小圆圈 InteriorColorIcon 图像是否是正确颜色的图像。如果我将鼠标悬停在 Inspect.exe 工具中的图像上,它会显示其 AutomationId = InteriorColorIcon,这很好。

但是如何确认图像是黑色、灰色还是棕色?

有没有办法以某种方式向 XAML 中的图像添加一个 属性 以便 Inspect 工具可以看到并且我可以在我的 UI 测试中使用它来验证图像显示的是正确的图像吗?

我认为检测颜色会很困难,但是有没有办法添加一个字符串 属性 或类似的字符串来用于此目的?

始终将 AutomationProperties 设置为对测试有用的值。Name for an Image. This is necessary for your Image to be read correctly from a screen reader. The Automation Name being "InteriorColorIcon" is an accessibility bug in your app. It should be something more descriptive, such as "Black image" (or whatever a black image indicates). Similarly, you can set the AutomationProperties.AutomationId

Expose basic accessibility information

<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),然后将捕获的像素与参考图像进行比较。