今天说说当今主流的自动化UI测试框架之一的appium使用总结,其中卡的我比较久的是被测App的安装时手机弹出的权限弹窗问题,主要说下解决方案。
之前也接触过网易的airtest project,uiautomator2等自动化测试框架, appium相对要麻烦一些,需要很多手机设备信息,包括被测App的信息。
appium主要的问题就在于它的设计就是建立在手机已经安装好了被测App的,它初始化连接设备需要打开指定App,而手动去安装被测App时很low的方式,一般来说我们会想到用 脚本去点击“同意弹窗”,但appium没初始化完成时是无法使用click方法的。
看过网上一些解决方案,说说我的实践效果:
- 采用adb点击弹窗“同意”坐标方式。
效果不佳,而且手机众多,很多手机的询问弹窗位置不一样,不建议使用。 - 通过adb 先把被测apk文件push到手机指定文件夹,再用db shell pm install 安装。
网上说能解决部分手机(不出现询问弹窗),但我使用的小米,华为等依然有弹窗。可能是手机原因不用吧。 多与做设备集群的自动化测试的来说,这种依然不行。 - 首次安装人工点击,测试完成后不卸载,后续App版本用自动化脚本测试时采取覆盖安装。
覆盖安装不会出现询问弹窗(我测的小米是这样),这种方式就只low一次,后续还好吧。 - 采用其他框架如uiautomator2的脚本,在appium是初始化安装App时,点击掉询问弹窗。
可行,但入手门槛高。
后面我想到一种方法,如下:
因为appium需要先打开一个App才能完成初始化,所以我们可以在配置参数中不配置我们被测的App,可以配置一些很小的App信息,且必须是每部手机上都会安装的。刚好,使用appium在设备与服务端通信,会在设备上安装一款叫appium setting的很小的App。
因此,我们可以参数里配置它,完成初始化后,再用adb或者appium提供的安装函数去安装实际被测App,再使用多线程去点击掉询问弹窗。代码如下: