Appium 简介
Appium 是一个开源的移动应用自动化测试框架,用于测试原生应用(native)、混合应用(hybrid)和移动网页应用(mobile web)。它支持 iOS、Android 和 Windows 平台。
https://www.bilibili.com/video/BV1R93szkEhi/?
App自动化测试:App测试Appium+UiAutomator2技巧、实战项目
核心特点
-
跨平台:同一套 API 可用于 iOS 和 Android
-
多语言支持:支持多种编程语言(Java, Python, Ruby, JavaScript, C#等)
-
开源免费:完全开源,无需授权费用
-
不依赖应用代码:不需要修改或重新编译应用
-
支持多种应用类型:原生、混合和移动网页应用
工作原理
Appium 采用客户端-服务器架构:
-
Appium 服务器:基于 Node.js 实现,负责与设备通信
-
客户端库:各种语言的客户端库(如 Python 的
Appium-Python-Client
) -
底层驱动:
-
iOS: 使用 XCUITest(Apple 官方框架)
-
Android: 使用 UIAutomator2/Espresso(Google 官方框架)
-
基本使用流程
-
安装 Appium 服务器(
npm install -g appium
) -
安装客户端库(如 Python:
pip install Appium-Python-Client
) -
编写测试脚本
-
启动 Appium 服务器
-
运行测试脚本
简单 Python 示例
python
from appium import webdriverdesired_caps = {'platformName': 'Android','platformVersion': '11','deviceName': 'emulator-5554','app': '/path/to/your/app.apk','automationName': 'UiAutomator2' }driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)# 执行测试操作 element = driver.find_element_by_id("com.example:id/button") element.click()driver.quit()
主要功能
-
元素定位:支持 ID、XPath、类名等多种定位方式
-
手势操作:点击、滑动、拖拽、缩放等
-
上下文切换:在原生和 WebView 之间切换
-
设备控制:旋转屏幕、返回键、主页键等
-
并行测试:支持多设备同时测试
适用场景
-
移动应用 UI 自动化测试
-
回归测试
-
兼容性测试
-
功能测试
-
自动化演示
Appium 是移动应用自动化测试的主流选择之一,特别适合需要跨平台支持的测试场景。
是app自动化测试用的吗
是的,Appium 是专门用于 移动应用(App)自动化测试 的开源框架,支持 Android、iOS 和 Windows 平台上的原生应用(Native App)、混合应用(Hybrid App)和移动网页应用(Mobile Web App)的自动化测试。
Appium 的主要用途
-
UI 自动化测试
-
模拟用户操作(点击、滑动、输入等)
-
验证界面元素是否正确显示
-
检查交互逻辑是否符合预期
-
-
功能测试
-
测试登录、注册、支付等核心业务流程
-
验证 API 与 UI 的交互是否正确
-
-
回归测试
-
每次发布新版本时,自动运行测试用例,确保旧功能不受影响
-
-
兼容性测试
-
在不同设备、不同系统版本上运行测试,确保 App 兼容性
-
-
性能测试(结合其他工具)
-
监测 App 启动时间、内存占用、CPU 使用率等
-
Appium 的核心优势
✅ 跨平台:同一套代码可测试 Android 和 iOS(减少维护成本)
✅ 支持多种语言:Python、Java、JavaScript、Ruby、C# 等
✅ 无需修改 App 代码:直接测试已安装的 App(无需重新编译)
✅ 支持真机和模拟器:可在真实设备或 Android 模拟器/iOS 模拟器上运行
✅ 丰富的定位方式:支持 ID、XPath、Accessibility ID、Class Name 等
Appium 的典型工作流程
-
启动 Appium 服务器(基于 Node.js)
-
编写测试脚本(如 Python +
Appium-Python-Client
) -
连接设备(真机/模拟器)
-
运行测试,生成报告
Python 示例(测试 Android App)
python
from appium import webdriver# 设备配置 desired_caps = {"platformName": "Android","platformVersion": "13","deviceName": "Pixel 6","app": "/path/to/your/app.apk","automationName": "UiAutomator2" }# 连接 Appium 服务器 driver = webdriver.Remote("http://localhost:4723/wd/hub", desired_caps)# 测试操作 search_box = driver.find_element("id", "com.example:id/search_box") search_box.send_keys("Hello Appium!") search_box.click()# 关闭会话 driver.quit()
Appium vs 其他移动自动化工具
工具 | 支持平台 | 语言支持 | 是否需要源码 | 适用场景 |
---|---|---|---|---|
Appium | Android, iOS | Python, Java, JS, C# | ❌ 不需要 | 跨平台 UI 自动化 |
Espresso (Android) | Android | Java, Kotlin | ✅ 需要 | Android 原生测试 |
XCUITest (iOS) | iOS | Swift, Obj-C | ✅ 需要 | iOS 原生测试 |
Selendroid | Android | Java | ❌ 不需要 | 旧版 Android 兼容测试 |
Calabash | Android, iOS | Ruby | ✅ 需要 | 跨平台 BDD 测试 |
适用人群
-
测试工程师:做 App 的 UI 自动化测试
-
开发人员:在 CI/CD 流程中集成自动化测试
-
DevOps:搭建自动化测试平台,提高发布质量
什么时候选择 Appium?
✔ 需要同时测试 Android 和 iOS
✔ 不想依赖 App 源码(测试已发布的 APK/IPA)
✔ 希望用 Python/Java/JS 等语言编写测试脚本
什么时候不推荐 Appium?
❌ 需要极高的执行速度(原生框架如 Espresso/XCUITest 更快)
❌ 测试游戏(推荐 Unity Test Framework 或 Appium + OpenCV)