Appium原理学习笔记

一.Appium 概念

appium 是一个移动端自动化测试开源工具,跨平台。支持android,ios原生应用,web应用和混合应用。

特点:appium类库封装了标志的Selenium客户端类库。同时又扩展了自己的移动端设备操作。

appium客户端实现了 Mobile JSON wire Protocol 和W3C WebDriver spec.

二.Appium流程图

 

Appium原理学习笔记_第1张图片

Appium原理学习笔记_第2张图片

三.关键词概念

UiAutomator

UiAutomator是Android 自动化测试框架,是谷歌在Android4.4版本后推出的一款用java编写的UI测试框架。其最大的特点就是可以跨进程操作。可以 使用UiAutomator框架提供的API进行一系列操作,如点击、滑动、长按等。

Bootstrap

Bootstrap是Appium 在初始化的时候推送到android手机上的一个UiAutomator测试脚本,该脚本的唯一一个测试方法所做的事情是在手机端开启一个SocketServer(通信模块),用来监听Appium从PC端过来的命令发送给UiAutomator来执行处理。

原理图:

Appium原理学习笔记_第3张图片

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系统更新的分离

原理图:

Appium原理学习笔记_第4张图片

四.连接时常用adb命令

(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

你可能感兴趣的:(Appium)