乐于分享
好东西不私藏

Appium详细介绍(一)

本文最后更新于2026-03-10,某些文章具有时效性,若有错误或已失效,请在下方留言或联系老夜

Appium详细介绍(一)

一、Appium 核心定位与核心优势

Appium 是一款开源的移动端自动化测试框架,核心价值在于实现移动端应用的自动化测试落地,同时具备两大核心亮点:

多应用类型全覆盖:支持三大类移动端应用的自动化测试,无需切换框架即可满足不同应用形态的测试需求:

  • 原生应用:直接基于 Android 或 iOS 系统原生开发语言编写的应用(如 Android 中的 Java/Kotlin 应用、iOS 中的 Objective-C/Swift 应用),无网页内容嵌套;

  • 移动网页应用:运行在移动端浏览器(如 iOS Safari、Android Chrome 等)中的网页应用,本质是移动端适配的网页;

  • 混合应用:包裹了 WebView 组件的原生应用,兼具原生应用的外壳和网页应用的内容交互性,原生控件与网页内容共存(如很多电商、社交类 App)。

跨平台特性突出:支持 iOS 和 Android 两大主流移动端操作系统,更可延伸至 Mac、Windows 桌面系统。其核心亮点是 **「一套 API 编写的自动化脚本,可直接在不同平台复用」**,无需针对 iOS 和 Android 分别编写差异化脚本,大幅降低跨平台测试的学习成本和维护成本。

二、Appium 底层工作引擎(驱动)

Appium 本身不直接实现与底层系统的交互,而是针对不同平台、不同系统版本,适配了对应的底层工作引擎(驱动),通过调用这些引擎完成自动化指令的执行。不同引擎的适配情况如下:
平台(Platform)
驱动(Driver)
支持系统版本
支持 Appium 版本
说明
iOS
XCUITest
9.3+
1.6.0+
目前 iOS 平台的主流驱动,依赖 Facebook 开源的 WDA(WebDriverAgent)实现底层驱动,支持高版本 iOS 系统
iOS
UIAutomation
8.0 ~ 9.3
所有版本
旧版 iOS 驱动,仅支持低版本 iOS 系统,现已逐步被 XCUITest 替代
Android
Espresso
高版本(无明确下限)
1.9.0+
贴近 Android 原生测试的驱动,自动化执行稳定性更强
Android
UiAutomator2
高版本(无明确下限)
1.6.0+
目前 Android 平台的主流驱动,对新版 Android 系统兼容性更好
Android
UiAutomator
4.3+
所有版本
旧版 Android 驱动,基于 Android 原生 UiAutomator 框架,仅支持低版本 Android 系统
Mac
Mac Driver
高版本(无明确下限)
1.6.4+
用于 Mac 桌面应用的自动化测试
Windows
Windows Driver
Windows 10+
1.6.0+
用于 Windows 10 及以上系统的桌面应用自动化测试
核心总结:不同平台 / 系统版本对应不同底层驱动,Appium 负责封装这些驱动,向上提供统一的 API 接口,这也是其 “一套 API 跨平台” 的底层支撑。

三、Appium 核心设计理念

Appium 的设计围绕 “标准化、灵活性、易用性” 展开,核心理念可拆解为以下几点,同时对应你提到的关键特性:

基于 WebDriver 协议的移动端 API 扩展(对应 b、c)

  • 基础支撑:WebDriver 是一套标准化的 UI 自动化协议,其核心特性是基于 HTTP 协议进行通讯,首次建立连接时会创建一个唯一的 Session 会话,客户端通过 POST 请求向服务端发送 JSON 格式的配置信息(如测试设备型号、应用包名、启动参数等),用于初始化测试环境。

  • 扩展升级:Appium 并非从零构建,而是在 WebDriver 协议的基础上,扩展了针对移动端设备和应用的专属自动化 API(如滑动屏幕、操作手机键盘、获取手机状态栏、操作 WebView 等),弥补了 WebDriver 协议在移动端场景的不足,同时保留了协议的标准化优势。

Client/Server(C/S)设计模式(对应 a、e)

这是 Appium 的核心架构模式,将自动化测试拆分为 “客户端” 和 “服务端” 两部分,各司其职:

  • 客户端:负责编写自动化测试脚本,支持 Java、Python、JavaScript、Ruby 等多种主流编程语言(多语言支持)。客户端无需关注底层驱动的实现细节,只需通过发送标准 HTTP 请求与服务端通讯,即可下发测试指令(如点击控件、输入文本)并接收执行结果。

  • 服务端:核心是基于 Node.js 开发的 HTTP 服务(纠正:并非客户端基于 Node.js,而是服务端),负责接收、解析客户端的 HTTP 请求,然后调用对应平台的底层工作引擎(如 iOS 的 XCUITest、Android 的 UiAutomator2)执行具体的自动化操作,最后将执行结果(成功 / 失败、控件信息等)反馈给客户端。

该模式的优势:客户端与服务端解耦,服务端可部署在任意设备 / 服务器上(本地电脑、远程云服务器等),无需与客户端同机,提升了测试的灵活性。

无侵入性与跨环境兼容

  • 无侵入性:测试过程中无需对被测应用进行修改(如植入测试代码),也无需重新打包,贴近真实用户的使用场景。

  • 跨环境兼容:服务端无绑定特定部署环境的限制,可适配单机测试、分布式测试、云测平台集成等多种测试场景,满足不同规模的测试需求。

四、Appium 核心工作原理

1. Android 端工作原理

结合 WebDriver 协议、C/S 架构和底层驱动,Android 端 Appium 的自动化执行链路如下:
  1. 客户端编写好自动化脚本,启动测试后,向 Appium 服务端发送 HTTP POST 请求,携带 JSON 格式的配置信息(如设备 UDID、应用包名、启动 Activity 等),请求创建 Session 会话。

  2. Appium 服务端解析配置信息,初始化测试环境,然后启动并连接运行在 Android 设备 / 模拟器上的Bootstrap.jar(中间件,运行在设备的 Android 系统中)。

  3. Appium 服务端将解析后的测试指令(如 “点击登录按钮”)发送给 Bootstrap.jar,Bootstrap.jar 作为 “桥梁”,将这些指令转化为 Android 原生 UiAutomator 框架可识别的命令。

  4. UiAutomator 框架(Android SDK 自带的原生 UI 自动化 Java 库)接收命令,执行具体的自动化操作(查找控件、触发点击 / 输入等事件),完成后将执行结果返回给 Bootstrap.jar。

  5. Bootstrap.jar 将执行结果回传给 Appium 服务端。

  6. Appium 服务端将结果封装为 HTTP 响应,返回给客户端,客户端脚本接收结果并继续执行后续步骤。

  7. 补充:针对 H5 页面(WebView 组件),由于 UiAutomator 对 H5 控件的定位和操作支持有限,Appium 会额外引入ChromeDriver,专门驱动 WebView 组件,实现 H5 页面的自动化测试,满足混合应用、移动网页应用的测试需求。

2. iOS 端核心工作原理(补充)

iOS 端的执行链路与 Android 端类似,核心差异在于底层驱动和中间件:
  1. 客户端同样发送 HTTP 请求与 Appium 服务端建立 Session,传递配置信息。

  2. Appium 服务端解析后,调用XCUITest 驱动(主流),而 XCUITest 驱动的执行依赖WDA(WebDriverAgent)(Facebook 开源,运行在 iOS 设备上的中间件)。

  3. WDA 与 iOS 系统底层交互,将 Appium 的自动化指令转化为 iOS 系统可执行的操作,完成后将结果逐层反馈给客户端。

  4. 针对 iOS 端的 H5 页面,Appium 引入 SafariDriver 实现 WebView 组件的自动化。

总结

  1. Appium 是一款跨平台、多应用类型支持的移动端自动化测试框架,核心优势是 “一套 API 跨 iOS/Android 平台复用”。

  2. 底层依赖不同的工作引擎适配不同平台 / 系统版本,架构采用 C/S 模式,基于 WebDriver 协议进行扩展。

  3. 工作原理的核心是 “客户端下发指令 – 服务端解析转发 – 底层引擎 / 中间件执行 – 结果逐层反馈”,通过解耦的架构实现了灵活性和易用性的统一,成为移动端自动化测试的主流选择。

本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » Appium详细介绍(一)

猜你喜欢

  • 暂无文章

评论 抢沙发

3 + 5 =