UI自动化

*****UI框架是什么*****

模拟用户操作的工具,就像真正的用户在操作一样

主要功能:测试你的应用是否能很好的工作在手机平台上

回归测试检验软件功能和用户需求

常用移动端UI测试框架:

已经有这么多测试框架,为何还要重复造轮子?
UI自动化的简单原理:连接测试设备,获取页面元素,解析页面元素,发送对应事件,执行测试完毕

1、简单:使用够简单,无需配置运行环境

2、稳定:无依赖,断开可重连

3、高效:因为够简单,极易扩展开发

*****梳理框架*****

UI测试框架最重要的核心是什么?

丰富的Api:可模拟人类的动作事件

动作类:点击,长按,拖动,滑动,捏合等

控制类:定位,wifi,蓝牙等

工具类:activity_name, log,性能信息等

怎么才能模拟人类动作呢?

Android sdk tools 提供了一个debug工具,名为adb

Android debug bridge(adb)是一个通用命令行工具

其允许您与模拟器实例或连接的Android设备进行通信

它可以为各种设备操作提供便利,如安装和调试应用

并提供对Unix shell的访问

动作类:可模拟的手势动作

返回:adb shell input keyevent 4

滑动:adb shell input swipe 300 1000 300 500

输入文本:adb shell input text hello

点击:adb shell input tap 300 300

控制类:可控制改变手机的状态

强制停止应用:adb shell am force-stop <packagename>

启动应用:adb shell am start -n <activity>

复制设备的文件到电脑:adb pull <设备里的文件路径> [电脑上的目录]

电量低:adb shell am broadcast -a android.intent.action.BATTERY_LOW

插入耳机:adb shell am broadcast -a android.intent.action.HEADSET_PLUG

安装应用:adb install -r [path]

工具类:手机运行状态与信息,肉眼不可见

查看前台Activity:adb shell dumpsys activity activities | grep mFocusedActivity

查看正在运行的Services:adb shell dumpsys activity services [<packagename>]

查看应用详细信息:adb shell dumpsys package <packagename>

获取imei:adb shell service call iphonesubinfo 1

有非常丰富的命令,供我们使用

*****编写框架*****

封装-动作类

最常用的两个手势动作是什么?

点击与滑动

点击

adb方法:adb shell input tap [x] [y]

adb是通过坐标点点击页面,无法精准点击控件,也无法兼容不同分辨率手机

思路:获取页面元素信息,精准操作。利用adb shell uiautomator dump可获取到当前界面元素xml集合(如右图)单个元素包含id,class,id,text,坐标点等。

原理:通过uiautomator dump获取元素信息,通过传入id,class,text等反推出元素坐标点,利用input tap进行点击

滑动

输入

练习

封装-控制类

adb封装了系统api,可轻松改变手机状态

启动\关闭应用

与应用交互:启动指定应用

练习

封装-工具类

手机运行状态与信息,肉眼不可见数据

那有什么基础数据不可见,但又非常有用呢?

性能信息

日志采集

*****调用执行*****

日志采集

测试

*****结语*****

通过对adb的封装,我们能工具代替一部分手动操作,大大提升了效率也提供了一些新的思路方法,提高测试的产出

 

posted @ 2019-11-15 10:09  滴滴滴滴答  阅读(141)  评论(0编辑  收藏  举报