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

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

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

我有一个显示 ListView 的 UWP 应用程序,每个 ListView 项如下所示

enter image description here

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

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

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

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

因此,如果 InteriorColor == "black",我的转换器将返回资源图像 Black.png,如下所示:

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

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

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

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

我认为检测颜色会很困难,但是有没有办法添加字符串属性或可用于此目的的其他内容?

最佳答案

始终设置 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),然后将捕获的像素与引用图像进行比较。

关于xamarin.forms - UI自动化-如何区分正在显示的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47213873/

相关文章:

uwp - 在 x :Bind and a IValueConverter? 中使用函数有什么区别

c++ - C语言的Windows UIAutomatin

xamarin - 命令未在发布版本中触发

xamarin.forms - 在 xamarin.form 应用程序中存储 token 的位置

c++ - 在 UWP 应用程序中使用 DataTemplate 时出现问题(崩溃,未设置数据)

c# - Xamarin : Segmented Control for windows uwp

ios - 如何将现有的Xamarin.iOS项目迁移到Xamarin.Forms代码中?

c# - Xamarin.Forms + HockeyApp - 自动提交崩溃报告

ui-automation - UIA:从控件类型名称(字符串)获取ControlType

c# - Windows UI 自动化 - 不捕获所有子树元素