目录
介绍
什么是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调试工具一样找到页面的各元素标签,从而进行操作
 通过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(这就有点坑)
 这个就如同html标签中的id属性一样,但是android可以允许有多个相同的id(这就有点坑)
代码测试
测试点击评论按钮

 启动测试
 启动测试

如果页面中有多个相同id,那么将元素都放到集合中,使用集合下标索引进行取元素点击

text定位
介绍

 
代码测试
使用文本定位点击经验


系统太卡不再贴录屏结果了,可以自己尝试
className定位

 
x-path定位


accessibility id定位


坐标定位

元素等待



手势操作滑动

由于前面博主引用的版本是6.1.0,所以这里需要自定义书写滑动代码
 
可以自行尝试,不再贴图,太卡了o(╥﹏╥)o 博主测试可以成功
appium常用api



 
 

