由于近期项目的需求,需要实现同时几十台设备的 UI 自动化测试且有客户端的交互行为,为此小编也是踩过了很多坑,故在这里分享一下经验,避免小伙伴们再次踩坑。
实现原理:多设备时的 Appium Server 控制,因为 Appium Server 与设备要一一对应,所以需要启动多个 server,然后启动多个 driver 与其交互即可。
这里注意不同的设备需要启动不同的 port 以及 bootstrap-port,并加上设备序列号参数。
注意以上 desired_caps 参数为必加参数,其他参数参照官方文档。这里重点说下 systemPort 参数,由于在 android7.0 及以上设备中有些控件 appium 不能识别,故加上此参数,此时 appium 会自动安装两个 apk(基于 uiautomator2.0)。
总结:总体来说,appium 框架相对稳定,但由于多设备并行需要启动多个 adb 端口及进程,难免会有不稳定的情况,项目中建议避免同时连接大量设备,小编此次同时连接了 15 台设备,appium 表现还是很稳定的。
附:Appium 框架原理
Appium 的加载过程
1)调用 Android adb 完成基本的系统操作
2)向 Android 上部署 bootstrap.jar
3)Bootstrap.jar Forward Android 的端口到 PC 机器上
4)Pc 上监听端口接收请求,使用 webdriver 协议
5)分析命令并通过 forward 的端口发给 bootstrap.jar
6)Bootstrap.jar 接收请求并把命令发给 uiautomator
7)Uiautomator 执行命令,android7.0 及以上基于 uiautomator2.0