appium实现自动化测试原理

目录

1、Appium原理

1.1、Android Appium原理图文解析

1.1.2、原理详解

1.1.2.1、脚本端

1.1.2.2、appium-server

1.1.2.3、中间件bootstrap.jar

1.1.2.4、驱动引擎uiautomator

1.2、 IOS Appium原理

1、Appium原理

1.1、Android Appium原理图文解析

执行测试脚本全过程:

  • 1、测试脚本通过Json Wire Protocol协议以json格式将数据通过HTTP协议与appium-server之间进行通信,将数据发送给appium-server
  • 2、appium-server接收请求,解析请求参数,然后将数据通过绑定的4724PC端口将数据发送给设备端的4724监听端口
  • 3、中间件bootstrap.jar监听4723端口,接收appium-server发送过来的数据,并将appium发送命令转换成uiautomator识别的命令,然后再转发给UIautomator
  • 4、UIautomator接收bootstrap.jar转发过来的命令,并执行命令,然后返回执行的结果
  • 5、执行结果层层往后返回(与数据请求方向相反),脚本端接收执行返回的结果,然后进行下一步操作。
  • 6、当测试脚本执行完成后,需关闭webdriver,执行driver.quit()会关闭所有关联窗口和结束对应session会话,同时也会把对应进程关闭。

1.1.2、原理详解

1.1.2.1、脚本端

        appium支持多语言,如Python、Java、JS、C、C#等语言,Appium提供的Appium-client API是Appium通过扩展Selenium的Webdriver协议而来的,在编写脚本代码的时只要实现Webdriver标准协议即可。因为是扩展Selenium的WebDriver协议所以脚本客户端与appium-server底层通信协议是基于HTTP协议。

1.1.2.2、appium-server

        appium-server需要脚本端告诉它应该做什么,所以启动appium server时需要脚本端告诉它设备信息,要启动的app,要启动的页面等相关配置信息,而这个配置信息是在脚本端通过desired Capabilities(一个设备信息字典)传递,通过Json Wire Protocol协议将测试脚本以json格式发送测试设备信息给appium-server端,然后根据设备信息启动一个该设备对应的session会话,用于管理在整个测试执行期间该设备会话信息的保持。

        appium-server默认绑定端口4723用于与脚本客户端的通信,创建session成功之前,就已将bootstrap.jar放入手机中,并开启设备上的基于appium bootstrap的socket服务,绑定本机和boostrap通信的端口号4724用于和终端设备通讯,默认监听4724端口,等待client的连接。

        appium-server将脚本的请求解析后给到4724端口,通过socket通信将数据发送到终端设备的4724端口,对于socket服务来说,appium-server就充当了client的角色,appium-server通过4724端口主动去请求设备上的socket服务,即向socket服务发送请求,即bootstrap.jar。

1.1.2.3、中间件bootstrap.jar

        bootstrap是Appium在初始化的时推送到Android手机上的一个UiAutomator测试脚本,该脚本的唯一一个测试方法的作用就是在手机端开启一个SocketServer(socket通信服务),实际上bootstrap是一个socket服务器,专门监听设备上4724端口过来的appium的连接和命令数据,并把appium的命令转换成uiautomator的命令来让uiautomator进行处理。

        appium的命令可以转换成uiautomator命令原理:bootstrap是uiautomator的测试脚本,它的入口类bootstrap继承于UiautomatorTestCase, 所以Uiautomator可以运行它 ,它也可以使用uiautomator的方法。

1.1.2.4、驱动引擎uiautomator

        uiautomator是谷歌在Android4.1版本发布时推出的一款用Java编写的UI测试框架,它只能用于UI即黑盒方面的测试.所以uiautomato只能运行在Android4.1之后的版本,其最大的特点是可以跨进程操作,可以执行通过appium发送的命令,实现自动化模拟人为测试的效果

        uiautomator2是uiautomator的升级版,目的是用于替换uiautomator+bootstrap.jar,功能比uiautomator更加强大。

1.2、 IOS Appium原理

  • iOS 9.3 之后的版本推出 XCUITest 工具,用以替代 UIAutomation,Appium需要1.6.0以上的版本才可以支持;Appium 在iOS 9.3 后全面采用 WebDriverAgent方案。
  • WebDriverAgent(简称WDA)是一个开源的工具,由 Facebook 提供,用于在 iOS 设备上进行自动化测试。它是基于 WebDriver 协议的实现,通过与客户端的交互来控制 iOS 设备上的应用程序。
  • XCUITest:是 XCTest 框架的扩展,是苹果官方提供的用于 iOS 应用程序 UI 测试的框架。它支持 Objective-C 和 Swift 语言,并提供了一组 API,用于操作 iOS 应用程序的用户界面元素。使用 XCUITest 可以模拟用户对应用程序的操作,如点击按钮、输入文本、滑动屏幕等,并验证应用程序的行为是否符合预期。

测试脚本执行流程:

  • 1、测试脚本通过Json Wire Protocol协议以json格式将数据通过HTTP协议与appium-server之间进行通信,将数据发送给appium-server。
  • 2、appium-server收到数据后与WebDriverAgent服务通信,WebDriverAgent服务与手机端的WebDriverAgentRunner应用通信,将数据转发到WebDriverAgentRunner应用。
  • 3、WebDriverAgentRunner收到数据后解析数据调用测试框架XCUITest来完成操作,操作完成后结果数据层层往回返回。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/478196.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows制作Ubuntu的U盘启动盘

概要: 本篇演示在Windows10中制作Ubuntu22.04的U盘启动盘 一、下载Ubuntu22.04的iso文件 在浏览器中输入https://ubuntu.com去Ubuntu官网下载Ubuntu22.04的iso文件 二、下载Ultraiso 在浏览器中输入https://www.ultraiso.com进入ultraiso官网 点击FREE TRIAL&a…

阿里云服务器操作系统有哪些?如何选择?

阿里云服务器镜像怎么选择?云服务器操作系统镜像分为Linux和Windows两大类,Linux可以选择Alibaba Cloud Linux,Windows可以选择Windows Server 2022数据中心版64位中文版,阿里云服务器网aliyunfuwuqi.com来详细说下阿里云服务器操…

CDP和Chrome

CDP和Chrome CDP和WebDriver Protocol WebDriver和 Chrome DevTools Protocol(CDP) 是用于自动化浏览器的两个主要协议,大多数的浏览器自动化工具都是基于上述其中之一来实现的。可以通过这两种形式来和浏览器交互,通过代码来控…

Python:多线程(threading)的学习和使用详解

概要 在Python中,threading库提供了一种简单且方便的方式来实现多线程编程。通过使用线程,可以在程序中并行执行多个任务,提高程序的性能和响应性。 了解线程 线程是程序执行的最小单元,是操作系统能够进行运算调度的基本单位。与进程不同,线程在同一进程下共享相同的内…

Redis篇----第六篇

系列文章目录 文章目录 系列文章目录前言一、Redis 的持久化机制是什么?各自的优缺点?二、Redis 常见性能问题和解决方案:三、redis 过期键的删除策略?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章…

极狐GitLab 如何配置多个 LDAP?

本文仅适用于极狐GitLab私有化部署场景。 场景化痛点 极狐GitLab 的多 LDAP 接入功能解决了企业在以下场景中可能遇到的痛点: 多个组织/部门的整合:在大型企业或跨国公司中,往往存在多个组织或部门,它们可能拥有独立的 LDAP 服务…

【day01】每天三道 java后端面试题:JDK、JRE和JVM | 字节码 | ACID

文章目录 1. JDK, JRE, JVM分别是什么?有什么区别?2. 什么是字节码?采用字节码的最大好处是什么?3. 什么是数据库事务?讲一下事务的ACID特性。 1. JDK, JRE, JVM分别是什么?有什么区别? 答题思路…

Unity之闪电侠大战蓝毒兽

目录 🎨一、创建地形 🎮二、创建角色 🏃2.1 动画 🏃2.2 拖尾 🏃2.3 角色控制 ​🏃2.4 技能释放 🏃2.5 准星 📱三、创建敌人 🐲3.1 选择模型 🐲3.…

网站管理新利器:免费在线生成 robots.txt 文件!

🤖 探索网站管理新利器:免费在线生成 robots.txt 文件! 你是否曾为搜索引擎爬虫而烦恼?现在,我们推出全新的在线 robots.txt 文件生成工具,让你轻松管理网站爬虫访问权限,提升网站的可搜索性和…

机器学习---规则学习(一阶规则学习、归纳逻辑程序设计)

1. 一阶规则学习 “一阶”的目的:描述一类物体的性质、相互关系,比如利用一阶关系来挑“ 更好的”瓜,但实际应用 中很难量化颜色、 …、敲声的属性值。一般情况下可以省略全称量词。 命题逻辑:属性-值数据 色泽程度&#xff1a…

什么是三防平板,三防指什么?

1、三防平板是一种特殊的电子设备,具有防水、防尘和防震功能,常用于户外探险、工业领域、军事行动等需要在恶劣环境中使用的场合。 三防是英文“三防”(IP rating)的缩写,全称为“国际防护等级”,是由国际…

使用openai-whisper实现语音转文字

使用openai-whisper实现语音转文字 1 安装依赖 1.1 Windows下安装ffmpeg FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。 # ffmpeg官网 https://ffm…