目录
前言
Appium 是一个开源的自动化测试框架,它可以用于测试 iOS 和 Android 应用程序。在设计 iOS 自动化测试用例时,需要考虑测试用例的可靠性、可维护性、可扩展性等因素,以确保测试用例能够有效地覆盖系统的所有功能和特性。Appium 提供了一些实用的功能,可以帮助测试人员快速准确地完成 iOS 自动化测试,例如使用 Appium-Python-Client 库来控制 Appium Server、使用 Appium-WebDriver-Manager 库来管理 Appium WebDriver 实例、使用 Appium-Grid 功能来在多个设备上同时运行测试用例等。
调查
Xcode9 SDK 不再支持 snapshot 功能了,没有 snapshot 功能就无法获取 page_source。而从 Appium1.6.5+ 后,Facebook 用 WDA snapshot, 相比于 Xcode SDK 的 snapshot, WDA snapshot 在生成 page source 的时候包含了一个之前没有的属性, 也就是 visibility 属性。计算元素的 visibility 在 XCTest 中是非常痛苦和昂贵的操作。
xpath 好像每次查找时都是重新生成一棵树,WDA 需要额外的努力来实施 XPath 查询,这会严重影响查找时间遍历整个元素树,生成一个 xml 数据,然后再做 xpath 查找。遍历和在 xml 中进行 xpath 查找都相当耗时。论坛比较多的说法是查找元素策略的性能从高到低排列如下:Class Name>Accessibility Id>Link Text>Predicate>Class Chain>XPath
但是以上各种方式试过了,也没有让我的用例快起来。
大坑
搜索了很多帖子,很多人都是反映 IOS 自动化速度太慢。但是都没提怎么解决。由于不想改现在共通的滑动和安卓手机按键操作的代码,没有 java-client 升级,保留当前 5.0.4 的版本,没有想到掉这么个大坑里,搞了两三天百撕不得骑姐。
和 py 最新库执行相同用例后的速度对比后才发现,可能是 jar 包的原因。升级 java-client 版本 5.0.4-->6.1.0,升级前来执行 6 分钟左右的下单用例,升级后 2 分钟 (包括人为设置的等待时间) 不到就执行完成了。
更换版本后真的快的飞起啊,比安卓用例执行更快了。
这里说一下我的环境配置,方便速度慢的同学参考:
- Xcode:9.4.1
- Appium:1.8.1
- 模拟器:11.4
- java-client:6.1.0(非常重要,和 5 比速度差的不是一个级别的)
元素定位优化策略
- 尽量不使用 xpath
长