【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 测相同逻辑,光是等驱动启动就要半分钟。

相关推荐
Shockang几秒前
LangGraph 状态机实战
人工智能
DLYSB_5 分钟前
存储运维实战:基于 Ceph Event 监听与 Python 适配器的分布式存储健康度物理声光响应架构
运维·ceph·python·报警灯
刹那芳华199212 分钟前
循环神经网络的从零开始实现(RNN)
人工智能·rnn·深度学习
阿童木写作22 分钟前
跨境图片翻译工具多合一,批量图片视频字幕翻译加智能抠图
人工智能·python·音视频·语音识别
科技之门22 分钟前
AI3D从建模到贴图、绑骨和动画的完整流程怎么做?V2Fun完整工作流指南
人工智能·3d·贴图
宇宙第一小趴菜23 分钟前
二、机器学习的应用领域和发展史
人工智能·机器学习
前端开发江鸟29 分钟前
我写过 MCP Server,却一直以为 MCP 只有 Tool
人工智能
天国梦1 小时前
自习室智能化升级避坑指南:天学网AI智习室方案实测与选型建议
大数据·人工智能
隐积1 小时前
3.1.7.Qt容器大家族(3):QVariant——万能盒子
开发语言·qt
阿里云云原生1 小时前
可用性从 99.9% 跃升至 99.995%:畅捷通如何用 AI 重塑运维底座?
运维·网络·人工智能