一、Appium的介绍
来自官网的解释:Appium 是一个开源工具,用于自动化 iOS 手机、 Android 手机和 Windows 桌面平台上的原生、移动 Web 和混合应用。
我们使用了系统自带的自动化框架。这样,我们不需要把 Appium 特定的或者第三方的代码编译进你的应用,这意味着你测试使用的应用与最终发布的应用并无二致。我们使用以下系统自带的自动化框架:
iOS 9.3 及以上: 苹果的XCUITest
iOS 9.3 及以下: 苹果的UIAutomation
Android 4.3+: 谷歌的UiAutomator / UiAutomator2
Android 2.3+: 谷歌的Instrumentation. (通过绑定独立的项目——Selendroid提供对 Instrumentation 的支持)
Windows: 微软的WinAppDriver
简而言之就是Appium作为一个中间桥梁,调用Android或iOS系统自带的自动化框架,来实现了自动化。
二、Appium的设计
appium是一个c/s 架构,appium把(系统本身的)供应商提供的框架封装到一套 api—— webdriver api内,WebDriver规定了一个客户端-服务端协议(JSON Write Product);使用python等语言由客户端向服务端发送HTTP请求。对于Android和iOS本质上工作原理一致:

对于Android而言,appium启动时会给设备发送一个jar包,方便后期通讯。
测试脚本通过web driver协议(http协议)发送给服务端———服务端命令发送给jar包,jar包调用系统内部的自动化测试框架,实现自动化测试。
对于Ios而言,appium封装了apple的XCUITest框架,在设备中注入了bootstrap.js(脚本)进行监听。
脚本 通过web driver协议(http协议)发送给服务端——服务端命令发送给jar包,脚本调用系统内部的自动化测试框架,实现自动化测试。
由于UIAutomator对H5支持有限,appium引入了chromdriver来支持H5 的自动化。