目录
[accessibility id定位](#accessibility id定位)
介绍
什么是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和手机模拟器可以百度找下
下载好后解压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