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

总结

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

相关推荐
乘云数字DATABUFF4 天前
5分钟部署开源APM Databuff:OpenTelemetry全链路追踪入门实战
运维·后端
荣--6 天前
一键部署不是为了省时间 —— 它是把"买来的 PaaS"变成"自己的平台"的拐点
运维·zabbix·工程化·一键部署·平台化·边界设计
江华森6 天前
动手实战学 Docker — 从零到集群编排完全指南
运维
Avan_菜菜7 天前
FRP 内网穿透完整实战:从 HTTP 映射到 HTTPS 自签代理
运维·nginx·https
SelectDB8 天前
Litefuse 开源并推出单进程轻量模式,25 秒就能跑起来的 Agent 可观测与评估平台
运维·后端·自动化运维
XIAOHEZIcode9 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户03284722207010 天前
如何搭建本地yum源(上)
运维
大树8813 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠13 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质13 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务