文章目录
- [1. Appium 简介](#1. Appium 简介)
- [2. Appium Drivers](#2. Appium Drivers)
- [3. Appium原理](#3. Appium原理)
- 总结
✨✨✨学习的道路很枯燥,希望我们能并肩走下来!
编程真是一件很奇妙的东西。你只是浅尝辄止,那么只会觉得枯燥乏味,像对待任务似的应付它。但你如果深入探索,就会发现其中的奇妙,了解许多所不知道的原理。知识的力量让你沉醉,甘愿深陷其中并发现宝藏。

本文开始
1. Appium 简介
Appium: 是一款开源框架,拥有丰富的生态系统和强大的社区支持。作为一种灵活的跨平台测试自动化工具,Appium 能够在 iOS、Android、Windows 和 Mac 设备上执行移动应用的自动化测试,并且支持使用相同的 API 编写适用于多个平台的测试脚本。
Appium 与 Selenium:
Appium 与 Selenium 类似,是一个跨语言的自动化框架,可与任何测试框架结合使用。支持多种编程语言编写测试脚本,包括 Java、JavaScript、PHP、Ruby、Python 和 C#。
2. Appium Drivers
- Appium 的核心是 Drivers(引擎),负责驱动设备或模拟器执行自动化脚本。
- Drivers 原为 Node.js 类,后被扩展为 BaseDriver,封装了 WebDriver 协议并加以增强,从而支持跨平台自动化测试,提升了灵活性和可扩展性。
- iOS 引擎
XCUITest-默认引擎:用于测试 iOS 原生应用程序。
WebDriverAgent:基于 XCUITest 的开源框架,用于测试 iOS 应用程序 - Android 引擎
UiAutomator2-默认引擎:用于测试 Android 原生应用程序。
Espresso:用于测试 Android 应用程序,特别适用于 UI 自动化测试。
Selendroid:用于测试 Android 应用程序,支持旧版本的 Android 平台。 - 其他引擎
Chromium Driver:用于测试 Chrome 浏览器。
Flutter Driver:用于测试 Flutter 应用程序。
Windows Driver:用于测试 Windows 桌面应用程序。
Mac2 Driver:用于测试 Mac 桌面应用程序。
Driver何时启动?
说明:Appium服务端收到POST /session请求时,根据automationName创建对应Driver实例
3. Appium原理
涉及客户端,服务端,移动端
- Client 端:与 Appium 的各种交互封装为可被调用的 API 或工具,可以通过 Inspector 或者 Java/Python/其他语言的 Appium 第三库对 Appium Server 进行调用。
- Server 端:起到了信息中转的作用。启动了一个 HTTP 服务,如此就可以接收Client 客户端的请求信息。会将所有的控制命令,比如:adb 命令,自动化的控制命令等其他命令转发到被测应用的移动端上面。
- 移动端:真正执行自动化测试的地方
【注】
Appium服务启动默认4723端口;
启动820x端口(一般是8200)启动自动化测试相关命令,传递给移动端6790端口;
Appium原理大致操作过程:
Appium 客户端(Python/Java库) → HTTP请求 → Appium服务器端(命令行/GUI,4723端口) → 匹配Driver → ADB命令(安装卸载/启动停止) → 端口转发(本地8200→设备6790) → 推送appium settings APK(初始化设置) → 启动appium server test APK(设备6790端口) → 移动端(真机/模拟器) → 操作被测App
xml
# appium原理
客户端(Python/Java)
↓ HTTP请求 (POST /session + desired_caps)
Appium服务器 (localhost:4723)
↓ 解析capabilities,匹配automationName
创建AndroidUiautomator2Driver实例
↓ Driver初始化
ADB命令:
① 检查设备连接 (adb devices)
② 安装 appium-settings APK(后台权限控制)
③ 安装 appium-uiautomator2-server APK(自动化执行引擎)
④ 启动被测App
⑤ 端口转发:adb forward tcp:8200 tcp:6790
↓
设备端 appium-uiautomator2-server 在6790端口监听
↓
Appium服务器通过8200↔6790通道发送操作指令
↓
设备执行操作(点击、滑动、输入等)
↓
结果返回给客户端
总结
✨✨✨各位读友,本篇分享到内容是否更好的帮助你理解,如果对你有帮助给个👍赞鼓励一下吧!!
🎉🎉🎉世上没有绝望的处境,只有对处境绝望的人。
🎉🎉🎉一遇挫折就灰心丧气的人,永远是个失败者。而一向努力奋斗,坚韧不拔的人会走向成功。
感谢每一位一起走到这的伙伴,我们可以一起交流进步!!!一起加油吧!!!

