APP自动化-Appium原理

文章目录

  • [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

  1. Appium 的核心是 Drivers(引擎),负责驱动设备或模拟器执行自动化脚本。
  2. 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原理

涉及客户端,服务端,移动端

  1. Client 端:与 Appium 的各种交互封装为可被调用的 API 或工具,可以通过 Inspector 或者 Java/Python/其他语言的 Appium 第三库对 Appium Server 进行调用。
  2. Server 端:起到了信息中转的作用。启动了一个 HTTP 服务,如此就可以接收Client 客户端的请求信息。会将所有的控制命令,比如:adb 命令,自动化的控制命令等其他命令转发到被测应用的移动端上面。
  3. 移动端:真正执行自动化测试的地方

【注】

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通道发送操作指令
    ↓
设备执行操作(点击、滑动、输入等)
    ↓
结果返回给客户端

总结

✨✨✨各位读友,本篇分享到内容是否更好的帮助你理解,如果对你有帮助给个👍赞鼓励一下吧!!
🎉🎉🎉世上没有绝望的处境,只有对处境绝望的人。
🎉🎉🎉一遇挫折就灰心丧气的人,永远是个失败者。而一向努力奋斗,坚韧不拔的人会走向成功。
感谢每一位一起走到这的伙伴,我们可以一起交流进步!!!一起加油吧!!!

相关推荐
OpsEye6 小时前
系统负载高一定是CPU问题吗?
运维·cpu·it
AOwhisky7 小时前
MySQL 学习笔记(第六期):MySQL 备份与恢复
运维·数据库·笔记·学习·mysql·云计算
赵民勇8 小时前
Linux file命令详解
linux·运维
li-xun8 小时前
LINUX DO 社区注册机制调整与公益 AI 服务动态
linux·运维·人工智能
j_xxx404_8 小时前
MySQL表操作硬核解析:从 CREATE TABLE 到磁盘文件、ALTER TABLE 与 DDL 风险
运维·服务器·数据库·c++·mysql·adb·ai
前端程序猿i8 小时前
Nginx 教程:从入门到能上线
运维·nginx
木雷坞8 小时前
Qdrant Docker 部署教程:数据卷、API Key 和集合初始化
运维·docker·容器·知识图谱
团象科技8 小时前
外贸站选海外服务器 拆解跨境运营中常被忽略的核心性能细节
运维·服务器
Lv_沐曦9 小时前
银河麒麟桌面版安装、多屏配置、触摸校准
运维·docker·samba·vsftpd·银河麒麟·触控校准·多屏配置
半壶清水9 小时前
ubuntu下利用ns-3 + NetAnim搭建可视化路由选路过程的方法
linux·运维·ubuntu