目录
介绍
什么是APPium?
APPium的特点
环境准备
adb(android调试桥)常用命令
appium图形化简单使用
连接手机模拟器
使用appium桌面端应用程序
编辑
整合java代码测试
环境准备
引入所需依赖
书写代码简单启动
编辑
Appium元素定位
id定位
介绍
代码测试
text定位
介绍
代码测试
className定位
x-path定位
accessibility id定位
坐标定位
元素等待
手势操作滑动
appium常用api
介绍
什么是APPium?
APPium是一个开源测试自动化框架,适用于原生、混合或移动Web应用程序的自动化测试工具。 APPium使用WebDriver协议驱动iOS、Android等应用程序。
APPium的特点
支持多平台(Android、iOS等)
支持多语言(python、java、ruby、js、c#等)
APPium是跨平台的,可以用在OSX,Windows以及Linux桌面系统上运行。
APPium选择了Client/Server的设计模式。只要client能够发送http请求给server,那么client用什么语言来实现都是可以的,这就是如何做到支持多语言的原因;
APPium基于WebDriver协议,并进行了扩展。这样的好处是可以直接继承WebDriver API,Selenium(WebDriver)各种语言的binding都可以直接拿来使用,省去了为每种语言开发一个client的工作量。
Appium的哲学:不需要重新编译或者修改应用;不被一种语言或者框架约束;不重复造轮子;开源免费
环境准备
本篇博客以java语言进行测试appium,所以本地电脑需要配置好jdk,其他环境android sdk和手机模拟器也是必须的
这里只提供android sdk和appium桌面版程序,jdk和手机模拟器可以百度找下
appium所需环境
下载好后解压android sdk
安装好android后配置下环境变量
来到android安装目录
点入到以下目录下
新增ANDROID_HOME环境变量
在path中新增变量
配置好后在cmd中输入adb
appium安装一路默认即可
adb(android调试桥)常用命令
一、常用简单的adb命令:
1、adb devices: 获取设备列表和设备的状态
2、adb get-state: 获取设备的状态(设备的状态有三种:device,设备连接正常;offline,连接出现异常,设备无响应;unknown,设备未连接;)
3、adb kill-server,adb start-server: 结束,启动adb服务
4、adb install -r: 覆盖安装应用(apk)
5、adb uninstall: 卸载应用(应用包名)
6、adb pull : 将设备上的文件复制到电脑上
7、adb push : 将电脑上的文件复制到设备上
8、adb reboot : 重启设备
9、adb connect : 远程连接设备
10、adb disconnect : 断开设备连接
二、adb shell pm基本的命令:
1、列出安装在设备上的应用
# adb shell pm list package -s 列出系统应用
# adb shell pm list package -3 列出第三方的应用
# adb shell pm list package -i 列出来源
# adb shell pm list package -f 列出包名和路径
2、列出应用apk的位置
# adb shell pm path packagename 列出应用apk的位置
3、列出应用的详细信息
# adb shell pm dump packagename 列出应用相关的信息
4、清除应用的缓存数据
# adb shell pm clear packagename 清除应用的缓存数据
5、安装卸载手机应用:
首先将test.apk文件push到手机目录中比如/data/local/tmp
# adb shell pm install /data/local/tmp/test.apk 安装
# adb shell pm install –r /data/local/tmp/test.apk 重新安装
# adb shell pm uninstall -k packagename 卸载,加k保留缓存数据
# adb shell pm install -d apk 允许降级安装
三、adb shell am基本的命令:
1、启动一个 Activity:
# adb shell am start -n activityname 启动一个 Activity
2、等待页面启动完成:
# adb shell am start -W activityname 等待页面启动完成
3、先停止应用再启动:
# adb shell am start -S activityname 先停止应用再启动
4、结束应用:
# am force-stop packagename 结束应用
三、adb shell dumpsys基本的命令:
1、监控应用数据:
# adb shell dumpsys cpuinfo cpu信息
# adb shell dumpsys meminfo 内存信息
# adb shell dumpsys power 电源信息
# adb shell dumpsys battery 电池信息
# adb shell dumpsys wifi wifi信息
# adb shell dumpsys notification 通知信息
# adb shell dumpsys activity 获取页面信息
四、关闭某项进程,以monkey为例:
杀死monkey进程:
# ps | grep monkey 查看monkey进程的pid
# kill pid 杀死monkey进程
五、最近12小时的资源情况:
# dumpsys procstats --hours 12 最近12小时的资源情况
六、录制屏幕命令:
# adb shell screenrecord /sdcard/demo.mp4 视频录制命令
可选参数:
1、限制录制时间:
参数: --time-limit
2、指定视频分辨率大小:
参数: --size
3、指定视频的比特率:
参数: --bit-rate
4、在命令行显示log:
参数: --verbose
七、截图命令:
# adb shell screencap -p /sdcard/screen.png 截图并保存到指定位置
八、input命令:
adb shell input:
<可选参数>
#text 输入文本
#keyevent 输入事件
#tap 点击
#swipe 滑动<坐标><坐标为原地,则是长按>
九、关于获取当前页面的信息:
# adb shell dumpsys activity top | findstr ACTIVITY 获取当前界面的Activity
# adb shell dumpsys activity | findstr mFocusedActivity 获取当前页面的activity
十、生成当前页面的xml文本:
# adb shell uiautomator dump [file] 获取当前页面的xml信息
text 控件中显示的文本内容
class 控件的类型
package 包名
content-desc 说明
checkable 是否允许check
checked check状态
clickable 是否允许click
enabled 控件状态
focusable 是否允许获取焦点
focused 是否获取到焦点
scrollable 是否允许滚动
long-clickable 是否允许长安
password 是否是密码控件
selected select状态
bounds 控件绘制的长宽及位置 四个数据,分成两组,分别是 左上坐标和右下坐标
十一、打印页面的log信息:
# logcat -s ActivityManager 打印页面的log信息
十二、系统操作指令
adb shell getprop ro.product.model 获取设备型号
adb shell getprop ro.build.version.release 获取设备 Android 系统版本
adb get-serialno 获取设备的序列号(设备号)
adb shell wm size 获取设备屏幕分辨率
adb shell dumpsys activity |find "mFocusedActivity" 查看前台应用包名,适用于 Android 7.0 以下,必须先启动 app
adb shell dumpsys activity |find "mResumedActivity" 查看前台应用包名,适用于 Android 8.0 以上,必须先启动 app
appium图形化简单使用
连接手机模拟器
准备apk安装包,将apk安装包安装在手机模拟器上
启动cmd窗口,输入命令查看当前连接的应用
adb devices
连接相应的手机模拟器,每个手机模拟器的端口号也不同,这里以mumu模拟器进行测试,mumu模拟器端口为7555,其他模拟器端口如下
模拟器名称 端口号
-------------------------------------
逍遥游 21503
夜神模拟器 62001
海马玩模拟器 26944
网易mumu模拟器 7555
天天模拟器 6555
BlueStacks 5555
雷电安卓模拟器 5555
天天安卓模拟器 5037
安卓模拟器大师 54001
Genymotion 5555
连接模拟器
adb connect 127.0.0.1:端口号
使用appium桌面端应用程序
打开appium
在高级设置里面进行一些配置设置
调整后保存为预设
调整简单模式的主机为本地
启动服务器
点击启动检查会话
点击自动设定进行编辑
deviceName(设备地址),platformName(平台名)
appPacage名获取:
来到android sdk安装目录
输入cmd
输入命令
aapt dump badging apk文件目录
appActivity 主启动入口获取
在刚才的命令输入后往下翻找 找到 launchable-activity(并不是所有apk都是这个字段,也可能是其他的) 字段
{
"deviceName": "127.0.0.1:7555",
"platformName": "Android",
"appPackage": "com.tencent.mm",
"appActivity": "com.tencent.mm.ui.LauncherUI",
"automationName": "UiAutomator2",
"noReset": "True"
}
编辑后另存为预设
然后启动会话
可以看到模拟器的微信随着appium自动启动了
下面以测试抖音为例
appium桌面客户端上方的工具栏都是模拟真人操作手机的操作
通过appium客户端可以像浏览器的f12调试工具一样找到页面的各元素标签,从而进行操作
如果模拟器的app页面和appium显示不一样,那是appium是截图模拟器的app进行显示的,需要手动实时刷新
整合java代码测试
环境准备
jdk8+maven5.0以上版本
引入所需依赖
<dependency> <groupId>io.appium</groupId> <artifactId>java-client</artifactId> <version>6.1.0</version> </dependency>
书写代码简单启动
启动测试 启动速度可能会有些慢,根据个人电脑配置等因素而定
Appium元素定位
id定位
介绍
使用appium进行查看元素
这个就如同html标签中的id属性一样,但是android可以允许有多个相同的id(这就有点坑)
代码测试
测试点击评论按钮
启动测试
如果页面中有多个相同id,那么将元素都放到集合中,使用集合下标索引进行取元素点击
text定位
介绍
代码测试
使用文本定位点击经验
系统太卡不再贴录屏结果了,可以自己尝试
className定位
x-path定位
accessibility id定位
坐标定位
元素等待
手势操作滑动
由于前面博主引用的版本是6.1.0,所以这里需要自定义书写滑动代码
可以自行尝试,不再贴图,太卡了o(╥﹏╥)o 博主测试可以成功
appium常用api