Appium 介绍
Appium是目前最热门的、做app自动化测试使用人数最多的一款主要应用于移动端的自动化测试框架,开源,支持原生、移动 web 和混合应用。
原生应用:指那些用 ios、 android 或者 windows SDKs 编写的应用。
移动web应用:是用移动端浏览器访问的应用( appium 支持 ios上的 safari 、chrome 和 android 上的内置浏览器)
混合应用:带有一个「webview」的包装器——用来和 web 内容交互的原生控件(以js+native两者相互调用为主,使用 Web 技术开发然后打包进原生包装器)
Appium优点
跨平台 :允许你用同样的 API 对多平台(ios、android、windows)写测试。做到在 ios、android 和 windows 测试套件之间复用代码。 多语言 :python、java、ruby、php、javascript 和 c# 等等 易上手 :对于有selenium经验的同学,可以快速掌握。
Appium缺点
环境难:环境搭建过程有点小小的复杂 跨应用:不支持跨应用测试,对于不同的手机,如照相等功能,需要编写不同的脚本 输入法:中文输入必须使用appium自带的输入法 局限性:只能用于UI的自动化测试
Appium 的组件
**客户端 / 服务器架构**
Appium 的核心一个是暴露 rest api 的 web 服务器。它接受来自客户端的连接,监听命令并在移动设备上执行,答复 http 响应来描述执行结果。
**会话(Session)**
自动化始终在一个会话的上下文中执行,这些客户端程序库以各自的方式发起与服务器的会话,但最终都会发给服务器一个 post /session 请求,请求中包含一个被称作「预期能力(Desired Capabilities)」的json对象。这时服务器就会开启这个自动化会话,并返回一个用于发送后续命令的会话 ID。
**Desired Capabilities**
是一些发送给 Appium 服务器的键值对集合(比如 map 或 hash),它告诉服务器我们想要启动什么类型的自动化会话。可以修改服务器在自动化过程中行为。例如,我们可以将 platformName 能力设置为 Android,以告诉 Appium 我们想要 Android 会话,而不是 IOS 或者 Windows 会话。或者我们也可以设置 safariAllowPopups 能力为 true ,确保我们在 Safari 自动化会话期间可以使用 JavaScript 打开新窗口
**Appium 服务器**
Appium 是一个用 Node.js 写的服务器。可以从源码构建安装或者从 npm 直接安装,例如:npm install -g appium
**Appium 客户端**
因为Appium是一个C/S结构,有了服务端的肯定还有客户端,Appium Clients就是客户端,它会给服务端Appium Server发送请求会话来执行自动化任务。就像我们浏览器访问网页,浏览器是客户端,通过操作发送请求服务器来获取数据。我们可以使用不同的客户端浏览器(IE,Firefox,Chrome)访问一个网站。 Appium客户端可以使用不同的语言来实现,如Python,java等。
**Appium Desktop**
1、是一个 Appium 服务器的图形界面,它适用于任何平台。它打包了 Appium 服务器运行需要的所有东西。 2、提供一个 Inspector 查看应用程序的界面元素,通过元素可以进行ui界面定位,实现自动化测试操作。
注意:Appium Desktop与Appium不同。 Appium Desktop是Appium的图形前端,带有其他工具。 Appium Desktop以其自己的节奏发布,并拥有自己的版本控制系统。 就像国内很多定制的Android系统有自己版本号,但是都是基于一个Android系统版本封装的。版本号不一定与Andriod原生系统版本号一致。
**Appium GUI**
Appium GUI是Appium desktop的前身。 也是把Appium server封装成了一个图形界面,降低使用门槛。
注意:Windows版本在2015年的AppiumForWindows_1_4_16_1.zip之后就停止更新了。目前版本可以使用,但是封装的不是最新的Appium版本,而是1.4.16版本。如果要使用最新的桌面版需要使用Appium Desktop
PS:使用appium环境时需要使用到以上部分组件。
。
Appium架构原理
Appium是在手机操作系统自带的测试框架基础上实现的,Android和iOS的系统上使用的工具分别如下:
Android(版本≤4.3):Selendroid,基于Android Instrumentation框架实现的自动化测试工具。 Android(版本>4.3):UIAutomator,Android 4.3之后系统自带的UI自动化测试工具。 iOS:UIAutomation(instruments框架里面的一个模板),iOS系统自带的UI自动化测试工具。
Appium运行原理
1、当开启Appium服务器的同时也开启了监听端口,当我们编写好测试脚本,运行自动化脚本的时候,调用的是webdriver的接口,会向Appium Server端Post一条HTTP请求,请求内容就是根据 json wire protocol协议规定的一条JSON格式的数据。
2、Appium Server端接收到请求后,解析出JSON数据并发送到手机端
3、手机端上已经由BootStrap.jar(如果是ios则为BootStrip.js)开启的服务器监听相应的端口,BootStrap.jar在appium每个session第一次访问手机端的时候会自动安装
4、手机端接收到对应的请求后,通过BootStrap.jar翻译成UIAutomator能执行的命令,然后通过UIAutomator处理并操作APP完成测试。
客户端与服务器端通过json Wire Protocol进行通信。
在学习过程中有遇到疑问的,可以appium+python QQ群交流:980 576 512
|