Appium获取XCUIElementTypeImage的图片文件名

Appium get image file name of XCUIElementTypeImage

我正在使用 Appium UI 测试我的 iOS 应用程序。

我想知道当前加载到 UIImageView 的图像文件名(资产名称),因为图像文件会根据情况动态变化。

<XCUIElementTypeImage type="XCUIElementTypeImage" name="Accessbility id I set in Xcode" enabled="true" visible="false" accessible="false" x="668" y="498" width="17" height="17" index="1"/>

这是 Appium 创建的 xml 的一部分。

我预计 'value' 或 'image' 或 'src' 之类的 属性 会出现在 xml 代码中,但它没有。

有没有办法知道图片资源名称?

Apple 的 XCTest 中的

UI 元素不包含原始文件元数据。 (例如,参见讨论 。)

如果您需要检查具有特定名称的图像是否已分配给视图对象,有人建议编写单元测试。

其他人将所有图像存储在测试包中,自动制作图像视图的部分屏幕截图并将其表示与存储的图像进行比较。 (我个人不确定它会有多不稳定,但是,IMO,这个选项无论如何都太复杂了。)

另一种选择可能是收集您要检查的所有状态下的应用程序屏幕截图,并将它们与预期的屏幕截图进行比较。我假设有一些工具可以帮助实现自动化。

虽然用这种方式来编写您的视图是一种非常肮脏的方式,但理论上您可以将图像的文件名作为辅助功能 ID 传递。由于您仍需要识别元素,因此您仍会使用可访问性标签来描述该元素。

为什么这个“脏”?您的 UIImageView 包含实例 UIImage,而不是文件。 UIImage 也不存储文件名,只存储文件的数据。出于这个原因,您必须非常麻烦地传递该文件名。这打破了很多视图控制器模式规则。

这不适合 UI 测试。或者,如果是,则不适用于 Appium。或者如果是的话,使用某种屏幕截图比较工具(我已经离开 Appium 几年了,但我相信你可以通过足够的努力甚至让外部工具工作)。

同样,这似乎需要付出很多努力,这对我来说总是一个危险信号。