Appium 获取 XCUIElementTypeImage 的图片文件名
Posted
技术标签:
【中文标题】Appium 获取 XCUIElementTypeImage 的图片文件名【英文标题】:Appium get image file name of XCUIElementTypeImage 【发布时间】:2021-12-19 05:59:44 【问题描述】:我正在使用 Appium 进行 UI 测试我的 ios 应用程序。
我想知道加载到 UIImageView 的当前图像文件名(资产名称),因为图像文件会根据情况动态变化。
<XCUIElementTypeImage type="XCUIElementTypeImage" name="Accessbility id I set in Xcode" enabled="true" visible="false" accessible="false" x="668" y="498" index="1"/>
这是由 Appium 创建的部分 xml。
我希望像“value”或“image”或“src”这样的属性会出现在 xml 代码中,但它没有。
有没有办法知道图片资源名称?
【问题讨论】:
【参考方案1】:虽然编写视图是一种非常肮脏的方式,但理论上您可以将图像的文件名作为可访问性 ID 传递。由于您仍需要识别元素,您仍将使用可访问性标签来描述元素。
为什么这是“脏”?您的 UIImageView 包含一个实例 UIImage,而不是一个文件。 UIImage 也不存储文件名,只存储文件的数据。出于这个原因,您必须非常混乱地传递该文件名。这打破了很多视图控制器模式规则。
这不适合 UI 测试。或者,如果是,则不是 Appium。或者,如果是,使用某种屏幕截图比较工具(我已经离开 Appium 好几年了,但我相信你可以通过足够的努力让外部工具也能工作)。
再一次,这似乎需要付出很多努力,这对我来说总是一个危险信号。
【讨论】:
【参考方案2】:Apple 的 XCTest 中的 UI 元素不包含原始文件元数据。 (例如,请参阅讨论 here。)
如果您需要检查具有特定名称的图像是否已分配给视图对象,有些人建议编写单元测试。
其他人将所有图像存储在测试包中,自动制作图像视图的部分屏幕截图并将其表示与存储的图像进行比较。 (我个人不确定它会有多不稳定,但是,IMO,无论如何,这个选项太复杂了。)
另一种选择可能是收集您想要检查的所有状态的应用屏幕截图,并将它们与预期的屏幕截图进行比较。我认为有一些工具可以帮助实现这一点。
【讨论】:
以上是关于Appium 获取 XCUIElementTypeImage 的图片文件名的主要内容,如果未能解决你的问题,请参考以下文章