appUI自动化
1、appium介绍
appium是一个自动化app的工具,继承了selenium
http://appium.io
appium概念
2、 appium自动化环境搭建
1、java环境,JDK,设置java环境变量
查看当前java版本 java -version
查看当前Java安装路径:where java
java-1.8的版本,java根目录设置系统环境变量,JAVA_HOME,
要在系统弹窗内能查到:set JAVA_HOME
2、安装Android SDK
D:\fengkunlei\Android SDK Windows
https://www.androiddevtools.cn/#
下载解压后根目录下,打开SDK Manager.exe文件勾选配置 install
设置环境变量,将解压后的文件路径,以下面的形式放置到系统环境变量的path里
配置完成后,要在系统弹窗命令行内能查到版本:adb version
%ANDROID_HOME%\tools
%ANDROID_HOME%\platform-tools
%ANDROID_HOME%\build-tools\21.0.2
3、安装模拟器,或者真机
安装完成后,连接模拟器:命令行运行:adb devices
List of devices attached
123456789ABCDEF device
输出上面内容,表示连接成功
4、adb常用命令
1.打印当前连接的所有模拟器或者设备
adb devices
2.连接设备
adb connect <host>[:<port>]
3.终止adb服务进程
adb ki11-server
4.开启adb服务进程
adb start-server
5.安装app xxx.apk:包名
adb insta1l xxx.apk
6.删除app xxx.apk:包名
adb uninsta1l xxx.apk
7.打印设备上安装的app包名
打印报名
adb she1l pm list packages
打印安装路径+包名
adb shell pm list packages -f
8.查看当前正在运行的包名
adb shell dumpsys window | findstr 关键字
9.进入设备控制台
进入:adb she11
退出:exit
10.查询当前页面 activity位置 可以获取appActivity,查询app的初始化页面,也就是第一个页面
adb shell dumpsys activity activities
11.查询入口activity还可以使用aapt 命令,命令语法如下:
aapt dump badging app包文件(apk文件)
5、Appium 服务器
Appium 是用 Node.js 写的服务器。它可以从源码构建安装或者从 NPM 直接安装:
$ npm instal1 -g appium
$ appium
Appium 客户端
有多个客户端程序库I(lava、Ruby、Pvthon、PHP、lavaScript和C#的)支持Appium对 WebDriver 协议的扩展,
你需要用这些客户端程序库代替通常的WebDriver 客户端。在这里浏览所有程序库的列表。
AppiumDesctop
有 Appium 服务器的图形界面包装器可以下载。
它们打包了 Appium 服务器运行需要的所有东西,所以你不需要为 Node 而烦恼。
它们还提供一个Inspector 使你可以查看你应用的层级结构,这在写测试时很方便。
https://github.com/appium/appium-desktop/releases
6、appium自动化流程
1.appium启动一个http服务,默认监听在4723端口用接受appium客户端发送的指令
2.appium客户端发送请求与appium服务建立一个会话,需要携带必要的Desired Capabilities 参数
3.appium 检查启动参数
4. 启动adb服务进程,默认端口5037
5.检查连接设备和平台版本
6.安装appum.setti
7.ngs并启动
8.端口转发建立UiAutomator2 Server的socket连接,adb所在平台8200端口(可以通过参数systemPort设置),设备平台6790
9.安装检查 io,appium,uiautomator2.server和io,appium.uiautomator2.server.test和appiumuiautomator2-server-debug-androidTest
10.Starting UlAutomator2 server,等待3秒
11.向8200端口发送get请求,获取UlAutomator2 server的状态
12.如果UlAutomator2 server在线,向8200端口发送post请求传递创建会话参数
desired capabilities
上面appium的介绍中,我们了解到,desired capabilities是一些发送给appium服务器的键值对集合,告诉服务器我们想要启动什么类型的会话。这里我们主要用到如下键值对
键值 | 描述 | 值 |
---|---|---|
platformName | 使用的手机操作系统 | ios,Android,或者使用的手机操作系统 |
platformVersion | 手机操作系统的版本 | 例如:5.1.1 |
deviceName | 使用的手机或模拟器类型 | 使用 adb devices 命令可以返回一个有效的设备列表 |
appPackage | 运行的 Android 应用的包名 | 例如:com.tencent.mm |
appActivity | Activity 的名字是指从你的包中所要启动的androidacticity。 他通常需要再前面添加 | 例如.ui.LauncheruI |
noReset | 重置app里的数据 | 默认为false |
重置策略
自动化平台 | 默认 | fullReset | noReset |
---|---|---|---|
ios (包括xCuITest) | 测试完成后关闭模拟器。不销毁模拟器。不从真机上卸载应用。 | 测试完成后卸载应用,模拟器测试结束后销毁模拟酯。 | 测试结束后不销毁或者关闭模拟器。启动测试运行在任意正在运行的模拟器或者插入的真机。 |
Android | 测试结束后停止应用,清理应用数据,不卸载应用包。 | 测试结束后停止应用,清理应用数据,卸载应用包。 | 不停止应用,不清理应用数据,不卸载应用包。 |