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

时间:2017-11-10 00:24:19

标签: xamarin.forms uwp microsoft-ui-automation xamarin.uwp

我是UI自动化的新手,并使用Inspect工具(Inspect.exe Microsoft工具),所以请解释一下。

我有一个显示列表视图的UWP应用程序,每个列表视图项看起来像这样

enter image description here

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

如果我使用Inspect.exe工具并将鼠标悬停在小圆圈InteriorColor Image上,它会显示AutomationId = InteriorColorIcon,这是我在XAML中给出的名称:

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

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

所以,如果InteriorColor ==&#34; black&#34;,我的转换器返回资源图像Black.png,如:

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

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

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

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

我认为检测颜色会很困难,但有没有办法在这些行中添加字符串属性或某些东西可用于此目的?

1 个答案:

答案 0 :(得分:3)

始终为图像设置AutomationProperties。Name。这对于从屏幕阅读器正确读取图像是必要的。自动化名称为“InteriorColorIcon”是您应用中的辅助功能错误。它应该是更具描述性的东西,例如“黑色图像”(或任何黑色图像表示)。同样,您可以将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),然后将捕获的像素与参考图像进行比较。