摘自:http://www.testclass.net/appium/appium-base-summary/java
appium 是一个自动化测试开源工具,支持 iOS 平台和 Android 平台上的原生应用,web应用和混合应用。python
重要的是,appium是一个跨平台的工具:它容许测试人员在不一样的平台(iOS,Android)使用同一套API来写自动化测试脚本,这样大大增长了iOS和Android测试套件间代码的复用性。git
appium类库封装了标准Selenium客户端类库,为用户提供全部常见的JSON格式selenium命令以及额外的移动设备控制相关的命令,如多点触控手势和屏幕朝向。github
appium客户端类库实现了Mobile JSON Wire Protocol(一个标准协议的官方扩展草稿)和W3C WebDriver spec(一个传输不可预知的自动化协议,该协议定义了MultiAction 接口)的元素。web
appium服务端定义了官方协议的扩展,为appium 用户提供了方便的接口来执行各类设备动做,例如在测试过程当中安装/卸载App。这就是为何咱们须要appium特定的客户端,而不是通用的Selenium 客户端。固然,appium 客户端类库只是增长了一些功能,而实际上这些功能就是简单的扩展了Selenium 客户端,因此他们仍然能够用来运行通用的Selenium会话。编程
appium是跨平台的,能够用在OSX,Windows以及Linux桌面系统上运行。设计模式
appium选择了Client/Server的设计模式。只要client可以发送http请求给server,那么的话client用什么语言来实现都是能够的,这就是appium及Selenium(WebDriver)如何作到支持多语言的缘由;浏览器
appium扩展了WebDriver的协议,没有本身从新去实现一套。这样的好处是之前的WebDriver API可以直接被继承过来,之前的Selenium(WebDriver)各类语言的binding均可以拿来就用,省去了为每种语言开发一个client的工做量;app
语言/框架框架 |
Github地址 |
Python |
|
Java |
在安装和介绍appium以前,很是有必要介绍一下appium是如何工做的。
经过上面一张图简单展现了appium的工具原理。
首先,appium支持多语言,由于它针对流的几种语言分别开发的相应的appium库。好处就是咱们能够选择本身熟悉的语言编写appium脚本。
其次,appium支持多平台,包括MAC和Windows。它针对这两大平台开发了appium-Server。
最后,appium又同时支持Android 和 iOS两个操做系统。
这就使得appium变得很是灵活。
当我在MAC平台上,经过Python(python-client )编写了一个appium自动化脚本并执行,请求会首先到 appium.dum (MAC下的appium-Server),appium-Server经过解析,驱动iOS设备来执行appium自动化脚本。或者,我在Windows平台上,经过Java( java-client )编写了一个appium自动化脚本并执行,请求会首先到 appiumForWindow.zip(Window下的appium-Server),appium-Server经过解析,驱动Android虚拟机或真机来执行appium脚本。
因此,你会看到appium的强大之处就在于此。
一个Android模拟器,或 一个 Android 手机,或 一台 iPhone 手机