一、Appium介绍
1、资料
Appium官网:https://discuss.appium.io/
Appium中文文档:https://testerhome.com/
Appium 社区:https://testerhome.com/topics/node23
Appium简明教程:http://www.cnblogs.com/nbkhic/tag/appium/
2、特点
appium 是一个自动化测试开源工具,支持 iOS 平台和 Android 平台上的原生应用,web应用和混合应用。
- “移动原生应用”是指那些用iOS或者 Android SDK 写的应用(Application简称app)。
- “移动web应用”是指使用移动浏览器访问的应用(appium支持iOS上的Safari和Android上的 Chrome)。
- “混合应用”是指原生代码封装网页视图——原生代码和 web 内容交互。比如,像 Phonegap,可以帮助开发者使用网页技术开发应用,然后用原生代码封装,这些就是混合应用。
重要的是,appium是一个跨平台的工具:它允许测试人员在不同的平台(iOS,Android)使用同一套API来写自动化测试脚本,这样大大增加了iOS和Android测试套件间代码的复用性。
特点:
(1)Appium采用Client-Server的架构设计,并采用标准的HTTP通信协议;Server端创建并管理多个WeDriver session与iOS/Android原生测试框架交互,无需测试人员关注细节实现;Client端基本上可以采用任意主流编程语言编写测试用例。
(2)支持Android4.2以上版本,基于UiAutomator架构。
(3)基于webdriver标准协议
Appium工作原理
- 使用Selenium WebDriver,在执行测试时用于和Selenium Server通信的时JSON Wire Protocl;
-
- 通过Selenium WebDriver驱动测试脚本,只要有对应的Selenium client library存在就可以用相应的语言写脚本;
- 对不同平台和应用类型的支持
3、与selenium
- appium类库封装了标准Selenium客户端类库,为用户提供所有常见的JSON格式selenium命令以及额外的移动设备控制相关的命令,如多点触控手势和屏幕朝向。
- appium客户端类库实现了Mobile JSON Wire Protocol(一个标准协议的官方扩展草稿)和W3C WebDriver spec(一个传输不可预知的自动化协议,该协议定义了MultiAction 接口)的元素。
- appium服务端定义了官方协议的扩展,为appium 用户提供了方便的接口来执行各种设备动作,例如在测试过程中安装/卸载App。这就是为什么我们需要appium特定的客户端,而不是通用的Selenium 客户端。当然,appium 客户端类库只是增加了一些功能,而实际上这些功能就是简单的扩展了Selenium 客户端,所以他们仍然可以用来运行通用的Selenium会话。
4、支持多平台,多语言
appium是跨平台的,可以用在OSX,Windows以及Linux桌面系统上运行。
原因:appium选择了Client/Server的设计模式。只要client能够发送http请求给server,那么的话client用什么语言来实现都是可以的,这就是appium及Selenium(WebDriver)如何做到支持多语言的原因;
语言/框架 Github地址
JavaScript (Node.js) https://github.com/admc/wd
Objective C https://github.com/appium/selenium-objective-c
RobotFramework https://github.com/jollychang/robotframework-appiumlibrary
5、iOS测试
Appium利用Apple组件之一的UI Automation特性实现。
- Appium作为一个HTTP Server接收测试脚本通过JSON Wire Protocol传输的指令。
-
- Appium发送这些指令给Apple组件;
- 这些指令就可在启动了被测应用的模拟器或真机中执行:
- 执行脚本:JSON指令->JavaScript命令;
- 返回响应:JavaScript->JSON Wire Protocol
- 这些指令就可在启动了被测应用的模拟器或真机中执行:
- Appium发送这些指令给Apple组件;
6、Android
- 执行脚本:JSON指令-JAVA命令;
- 返回响应:响应->JSON Wire Protocol