1.基础

--appium是一款开源的移动端自动化测试工具,支持ios和android平台上开发的APP

--appium支持跨平台使用,可使用同一套API来写自动化测试脚本,在ios/android平台上测试,加大了代码的复用性

--appium支持多语言,Python/Java/Ruby等

--appium真正的工作引擎其实是第三方自动化框架,无需在APP中植入appium特地代码或第三方代码

iOS:苹果的UIAutomation框架

android 4.2+:Google的UIAutomator框架

android 2.3+:Google的Instrumentation框架

--appium把第三方框架封装成一套API,称为WebDriver(Selenium WebDriver),指定了客户端到服务器的协议

--appium扩充了WebDriver的协议,添加了与移动测试自动化相关的API方法

--appium相关概念

C/S架构:客户-服务器架构,只要客户端能发送HTTP请求给服务器,客户端就可使用多种编程语言实现;appium核心是一个Web服务器,该服务器提供了一套REST接口。服务器在收到客户端命令后,会在移动设备上执行这些命令,后将执行结果放在HTTP响应中并返回客户端。

会话:自动化总是在名为会话的上下文中进行。客户端将初始化一个用来和服务器交互的会话,然后发送附有Desired Capabilities的JSON对象参数的POST请求/会话给服务器,服务器就会开始一个自动化的会话,返回一个会话ID,客户端在得到这个ID后便开始发送后续命令。

Desired Capabilities:一些键值对的集合,告诉服务器要启动怎样的自动化会话。

Appium服务器:使用Node.js编写,功能是监听接口,接收PC客户端发送的指令,将其转换为移动设备能识别的指令,后发送给移动设备进行操作,再等待移动设备返回操作结果,并发送给客户端。服务器可放在PC客户端,也可放在云端,默认端口号4723

Appium客户端:主要指实现了Appium功能的WebDriver协议的客户端库,其中提供了一些封装好的API以支持访问移动端。客户端提供了很多语言库以支持JAVA等编程语言,这些语言库让Appium实现了对WebDriver协议的扩展。当使用Appium时,只需要使用这些语言库代替常规的WebDriver库就可以了

Appium Desktop:不仅封装了运行Appium服务器所需的所有依赖元素,还提供了Inspector工具,以方便使用者检查应用的界面元素的层级,从而简化测试用例编写

--Appium工作原理:(Appium基于WebDriver协议,并利用Bootstrap.jar来调用UIAutomator框架,进而执行指令)

编写客户端脚本-->开启Appium服务器-->Appium服务器在收到客户端请求后,将请求解析为UIAutomator可识别的指令,再将这些指令转发给Android设备的Bootstrap.jar服务,默认使用4724端口-->调用UIAutomator,在设备上执行自动化测试并将结果返回给Appium服务器-->Appium服务器将执行结果返回给Appium客户端

--Appium与Selenium

Appium类库封装了标准的Selenium客户端类库,为用户提供了所有常见的JSON格式的Selenium命令以及额外的与移动设备控制相关的命令;Appium扩展了WebDriver协议,以前WebDriver API可继承,Selenium WebDriver可直接拿来用

2.环境搭建

--需要:编程语言(java),appium client, appium server, android sdk, android studio/idea, android模拟器/android手机/iphone手机

--安装Android SDK

Android SDK是android应用的软件开发工具包,提供了android api库和开发工具构建。 https://www.jianshu.com/p/2078112331fb Android SDK的安装与环境变量配置

http://www.testclass.net/appium_base/appium-base-sdk

--.apk files are for android apps. / .ipa for iOS / Xcode是IOS的开发环境

--安装java->安装Android sdk->安装Android studio(包含了Android sdk和Android模拟器)/IDEA->安装appium客户端-->安装appium(服务器)->安装android手机驱动(adb devices) / 打开模拟器

3.定位Appium元素的3个利器

--UI Automator Viewer:仅限Android系统

--Inspector:Android & IOS

--Chrome浏览器的ADB插件,主要用于基于浏览器的Web应用

4.Desired Capabilities

--Desired Capabilities在启动session时必须提供

--Desired Capabilities本质上是key value的对象,客户端将这些键值对发给服务端,告诉服务端启动怎样的会话

--Appium的Desired Capabilities是扩展了webdriver的Desired Capabilities的,一般需指定以下配置

platformName---使用哪种移动平台,ios, Android, FirefoxOS

deviceName--指定真机或模拟器的设备名称,如Nexus_5X_API_29

automationName---使用哪种自动化引擎,appium(默认)or Selendroid  (非必须)

platformVersion---指定平台的系统版本,如Android平台,版本为5.1

appPackage---待测app的包名, 如com.example.android.myapp, com.android.settings

appActivity---待测app的活动名,如MainActivity, .Setting。注意:原生app的话要在activity前加"."

app---安装包路径,若android指定了appPackage和appActivity,则不需要该参数 (非必须)

browserName---使用的浏览器名称,Chrome/Safari (非必须)

noReset---不重置应用,false(默认)或true (非必须)

--如何获取platformVersion

cmd-->adb shell getprop ro.build.version.release

--如何获取appPackage/appActivity

情况一:提供被测应用的APK包(适用于Android系统)

使用AAPT构建工具(C:\Users\yoyo\Android-SDK\build-tools\31.0.0\aapt.exe)

命令:cmd->aapt dump badging apk 包名,如 aapt dump badging apk fengkuangshuiguodazhan_112.apk

情况二:提供安装了被测应用的手机设备

cmd-->adb shell dumpsys window | findstr mCurrentFocus

5.Android Studio学习教程

Android Studio 简介丨慕课网教程 (imooc.com)

更多文章请关注《万象专栏》