appium 是一个移动端自动化测试开源工具,跨平台。支持android,ios原生应用,web应用和混合应用。
特点:appium类库封装了标志的Selenium客户端类库。同时又扩展了自己的移动端设备操作。
appium客户端实现了 Mobile JSON wire Protocol 和W3C WebDriver spec.
UiAutomator
UiAutomator是Android 自动化测试框架,是谷歌在Android4.4版本后推出的一款用java编写的UI测试框架。其最大的特点就是可以跨进程操作。可以 使用UiAutomator框架提供的API进行一系列操作,如点击、滑动、长按等。
Bootstrap
Bootstrap是Appium 在初始化的时候推送到android手机上的一个UiAutomator测试脚本,该脚本的唯一一个测试方法所做的事情是在手机端开启一个SocketServer(通信模块),用来监听Appium从PC端过来的命令发送给UiAutomator来执行处理。
原理图:
UiAutomator2
UiAutomator2可以理解为升级版,作用于UiAutomator+Bootstrap一样,但原理不同。
为了能够支持UiAutomator2,Appium引入了appium-uiautomator2-server。
但是同样也是开启端口,然后监听Appium server传过来的数据并交给底层的UiAutomator2执行。
1、Appium使用UiAutomator2的目的是为了替换掉之前的UiAutomator+Bootstrap模式
2、Bootstrap是基于UiAutomator V1(即为UiAutomator)的,但是UiAutomator很多Api基本上官方不再维护了
3、UiAutomator V2修复了UiAutomator V1中遇到的大多数问题,最重要的是实现了与Android系统更新的分离
原理图:
(1)获取设备的Android版本
D:\Android\Sdk\platform-tools\adb.exe -P 5037 -s emulator-5554 shell getprop ro.build.version.release
(2)这两个命令应该是在测试设备连接已经网络连接是否正常
D:\Android\Sdk\platform-tools\adb.exe -P 5037 -s emulator-5554 wait-for-device
D:\Android\Sdk\platform-tools\adb.exe -P 5037 -s emulator-5554 shell echo ping
(3)
D:\Android\Sdk\platform-tools\adb.exe -P 5037 -s emulator-5554 shell dumpsys package io.appium.settings
(4)强制关闭APP
D:\Android\Sdk\platform-tools\adb.exe -P 5037 -s emulator-5554 shell am force-stop com.lemon.lemonban
(5)清除APP相关数据
D:\Android\Sdk\platform-tools\adb.exe -P 5037 -s emulator-5554 shell pm clear com.lemon.lemonban
(6)开启APP
D:\Android\Sdk\platform-tools\adb.exe -P 5037 -s emulator-5554 shell am start -W -n com.lemon.lemonban/com.lemon.lemonban.activity.WelcomeActivity -S
(7)获取屏幕尺寸
D:\Android\Sdk\platform-tools\adb.exe -P 5037 -s emulator-5554 shell wm size
(8)获取产品手机型号
D:\Android\Sdk\platform-tools\adb.exe -P 5037 -s emulator-5554 shell getprop ro.product.model
(9)获取产品手机厂商
D:\Android\Sdk\platform-tools\adb.exe -P 5037 -s emulator-5554 shell getprop ro.product.manufacturer
(10)socket 端口绑定
D:\Android\Sdk\platform-tools\adb.exe -P 5037 -s emulator-5554 forward tcp\:4724 tcp\:4724
(11)创建文件夹
D:\Android\Sdk\platform-tools\adb.exe -P 5037 -s emulator-5554 shell mkdir -p /data/local
(12)推送文件
D:\Android\Sdk\platform-tools\adb.exe -P 5037 -s emulator-5554 push C\:\\Users\\Administrator\\AppData\\Local\\Programs\\Appium\\resources\\app\\node_modules\\appium\\node_modules\\appium-android-driver\\bootstrap\\bin\\AppiumBootstrap.jar /data/local/tmp/
(13)查看uiautomator相关的进程
D:\Android\Sdk\platform-tools\adb.exe -P 5037 -s emulator-5554 shell pgrep \^uiautomator\$
(14)查看当前窗口的在哪个组件中
D:\Android\Sdk\platform-tools\adb.exe -P 5037 -s emulator-5554 shell dumpsys window
(15)返回主页,按home键
D:\Android\Sdk\platform-tools\adb.exe -P 5037 -s emulator-5554 shell input keyevent 3
如果想加深了解Appium的原理,可以看下Appium的启动日志,会有帮助。
以上UIautomator/UIautomator2/Bootstrap部分参考自https://www.cnblogs.com/yyoba/p/9675071.html