【Appium 系列】第01节-Appium 是什么 — 移动端自动化的行业标准

第01节-Appium 是什么 --- 移动端自动化的行业标准

对应代码:配套代码(16节完整框架,含 API 测试 + UI 测试)

说明:本节涉及的代码示例,在配套代码中都能找到对应的真实实现。


这节讲什么

我手头一个项目,需要同时测 Android 和 iOS。两个平台,一套业务逻辑。如果为每个平台各写一套测试,工作量翻倍,维护成本也翻倍。

试了一圈市面上的工具:

  • UIAutomator2:Android 上很快,但 iOS 用不了
  • XCUITest:iOS 原生的,但 Android 不用想
  • Airtest:图像识别直观,但精度和稳定性不够

最后选了 Appium。不是因为它比谁快------UIAutomator2 在 Android 上更快,XCUITest 在 iOS 上更原生------而是因为它是当时唯一一个能让我用同一套 Python 代码同时跑 Android 和 iOS 的工具。


Appium 怎么工作的

Appium 是 C/S 架构:

复制代码
测试脚本(Python) → HTTP请求 → Appium Server(Node.js) 
                                  ↓
                    ┌──────────────┼──────────────┐
                    ↓              ↓              ↓
              UiAutomator2    XCUITest      Espresso
              (Android)       (iOS)         (Android)
                    ↓              ↓              ↓
              Android设备     iOS设备        Android设备

你的 Python 脚本发 HTTP 请求给 Appium Server,Server 根据平台类型转发给对应的自动化引擎。Android 走 UiAutomator2,iOS 走 XCUITest。写代码的时候,driver.find_element() 在两个平台上调用方式一样------底层怎么转发你不用管。

和其他工具怎么选

工具 平台 语言 适合场景
Appium Android + iOS Python/Java/JS/C# 双平台,统一代码
UIAutomator2 Android only Java/Kotlin 纯 Android 项目
XCUITest iOS only Swift/Obj-C 纯 iOS 项目
Airtest Android + iOS + Windows Python 游戏测试、图像识别

我个人的选择逻辑:

  • 双平台 + 想用 Python → Appium
  • 只测 Android → UIAutomator2(轻量,启动快)
  • 只测 iOS → XCUITest
  • 游戏/图像匹配为主 → Airtest

Appium 2.0 跟 1.x 有什么不一样

最大的变化:插件化。

1.x 版本装一个 appium 就自带所有驱动。2.0 把驱动拆成独立插件,需要手动装:

复制代码
npm install -g appium

# 装 Android 驱动
appium driver install uiautomator2

# 装 iOS 驱动
appium driver install xcuitest

# 查看已装的驱动
appium driver list

刚开始我还不适应,觉得多了一步麻烦。但用久了发现好处:驱动可以独立升级。不用等 Appium 主版本更新就能用上最新的 UiAutomator2。

踩过的坑

1. 分不清 Appium Server 和 Appium Client

第一次用的时候,以为 pip install Appium-Python-Client 就够用了。结果跑测试报 Connection refused ------忘了启动 Appium Server。

结论 :Appium Server 是一个独立的 Node.js 服务,需要先启动。测试脚本里的 webdriver.Remote() 是去连这个服务。Server 没起来,脚本连谁?

2. Appium 1.x 和 2.0 的教程混着看

网上大部分教程还是 1.x 的安装方式------npm install -g appium 就行了。但 2.0 还要多一步装 driver。一开始照着 1.x 的教程装完,跑测试报 The desired capabilities must include either an app, appPackage or browserName,查了半天才发现是驱动没装。

3. 启动时间是真的慢

Android 上启动 UiAutomator2 Server 要 10-30 秒,iOS 上启动 WebDriverAgent 要 20-60 秒。注意,这不是一次性的------是每次测试会话都要等这么久。

解决方案:用 session 级 fixture,整个测试只初始化一次 driver。后面每篇细讲。

4. Appium Inspector 是必需品

不要凭想象写元素定位。先开 Appium Inspector 连上设备,看看页面上到底有哪些元素、它们的 accessibility_id 和 resource-id 是什么。我之前图省事,直接写 xpath,结果 App 一次改版 xpath 全废了。


什么时候不用 Appium

如果你的测试只需要验证 API 返回的数据对不对,用 requests 就够了,不需要启动 Appium。

Appium 只解决一个问题:验证用户能看到什么、能操作什么。API 层面的验证,用 requests 更轻更快。

配套代码里的 14 个测试,全是 API 测试,用 requests 直接调 Flask Mock Server,秒级跑完。如果改用 Appium 测相同逻辑,光是等驱动启动就要半分钟。

相关推荐
临床数据科学和人工智能兴趣组1 分钟前
399元现在超值!学R语言,订阅我们专栏就够了,包括了所有的内容,不断更新!
人工智能·数据挖掘·r语言·r语言-4.2.1·临床研究
sjh7524229692 分钟前
Deepseek Harness的四种模式
人工智能
一比七品牌咨询2 分钟前
科技企业品牌定位:如何把技术优势转化为品牌优势?
大数据·人工智能·品牌策划·品牌全案策划·深圳品牌策划公司·品牌定位
东莞市云毅网络有限公司3 分钟前
用 SQLite FTS5 给企业知识库做问答检索原型:中文二元切分与 BM25 排序
python·sqlite·自动化运维·geo·数据监测
一木 之林3 分钟前
深度学习-计算优化与分布式训练-111-128
人工智能·深度学习
BingoGo6 分钟前
一个ChatGPT 超级省额度方案!用 TaskQuay 连接网页 ChatGPT 和本地 Codex
人工智能·后端
承渊政道6 分钟前
PR-Agent鸿蒙PC适配全记录:从Python服务端代理到ArkTS原生评审客户端
python·华为·代理模式·agent·harmonyos·pc端
万象新讯7 分钟前
自筹资金、加速器孵化和获得融资的创业公司,可以分别申请哪些AWS扶持政策?
人工智能
Thomas.Sir7 分钟前
第49课:TensorFlow|项目性能调优全方案【训练提速、推理提速、资源占用优化】
人工智能·python·tensorflow