前言:
由于近期项目的需求,需要实现同时几十台设备的UI自动化测试且有客户端的交互行为,为此小编也是踩过了很多坑,故在这里分享一下经验,避免小伙伴们再次踩坑。
小编环境:
python3.6
appium:1.7.1
实现原理:多设备时的Appium Server控制,因为Appium Server与设备要一一对应,所以需要启动多个server,然后启动多个driver与其交互即可。
实现步骤:
开启多个Appium Server(本文在命令行下启动,界面UI版也可以,多设备并行建议命令行下启动):
这里注意不同的设备需要启动不同的port以及bootstrap-port,并加上设备序列号参数。
启动driver程序
注意以上desired_caps参数为必加参数,其他参数参照官方文档。这里重点说下systemPort参数,由于在android7.0及以上设备中有些控件appium不能识别,故加上此参数,此时appium会自动安装两个apk(基于uiautomator2.0)。
多线程启动server以及driver
总结:总体来说,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