一文让你了解appium自动化的工作原理

news2024/11/17 9:55:11

目录

前言:

一、Appium加载的过程图解

二、初步认识appium工作过程

三、bootstrap介绍

四、所使用的技术

五、Capabilities

六、自我理解的工作原理


前言:

Appium是一个流行的开源自动化测试框架,支持移动应用程序的自动化测试。

一、Appium加载的过程图解

Appium的原理

WebDriver script:我们的测试脚本(java or python)

Appium:

会首先开启一个监听4723端口的server,接收测试脚本发送过来的对应请求,再将对应的请求发送给中间件Bootstrap.jar(注意这里的请求不是整个脚本文件,而是对应的命令请求,比如:点击一个元素就是一条请求)

Bootstrap.jar:

监听4724端口由appium发送过来的相关请求,并且将请求转换成UiAutomator可以识别的命令发给UiAutomator进行处理

二、初步认识appium工作过程

  1. appium是c/s模式的 

  2. appium是基于webdriver协议添加对移动设备自动化api扩展而成的,所以具有和webdriver一样的特性,比如多语言支持 

  3. webdriver是基于http协议的,第一连接会建立一个session会话,并通过post发送一个json告知服务端相关测试信息 

  4. 对于android来说,4.2以后是基于uiautomator框架实现查找注入事件的,4.2以前则是instrumentation框架的,并封装成一个叫Selendroid提供服务 

  5. 客户端只需要发送http请求实现通讯,意味着客户端就是多语言支持的 

  6. appium服务端是node.js写的,所以你安装的时候无论哪个平台都是先装node,然后npm install -g appium安装(翻墙墙)

三、bootstrap介绍

1)Bootstrap作用:

Bootstrap是Appium在初始化的时候推送到安卓手机上的一个UiAutomator测试脚本,该脚本的唯一一个测试方法所做的事情是在手机端开启一个SocketServer(通信模块),用来监听Appium从PC端过来的命令发送给UiAutomator来执行处理。

它会监听4724端口获得命令然后pass给UiAutomator来做处理。

2)Bootstrap在appium中扮演的角色:

首先,Bootstrap是uiautomator的测试脚本,它的入口类bootstrap继承于UiautomatorTestCase,所以Uiautomator可以正常运行它,它也可以正常使用uiautomator的方法,这个就是appium的命令可以转换成uiautomator命令的关键;

其次,bootstrap是一个socket服务器,专门监听4724端口过来的appium的连接和命令数据,并把appium的命令转换成uiautomator的命令来让uiautomator进行处理;

最后,bootstrap处理的是从pc端过来的命令,而非一个文件。

四、所使用的技术

Android上使用了instrumentation和uiautomator两套技术

iOS使用uiautomation

同时还支持firefox, 并可扩展其他平台

默认开启4723端口接受webdriver请求 ,4723是appium服务的,专门和脚本打交道;

默认开启4724用于和Android设备通讯

五、Capabilities

Capabilities是由客户端发送给Appium服务器端的用来告诉服务器去启动哪种我们想要的会话的一套键值对集合。当中也有一些键值对是用来在自动化的过程中修改服务器端的行为方式。

六、自我理解的工作原理

Appium启动时会创建一个http:127.0.0.1:4723/wd/hub服务端(相当于一个中转站),脚本会告诉服务器我要做什么,服务端再去跟设备打交道,服务端完成了脚本交给他的任务之后

服务端和设备如何通讯?

服务端和设备默认使用4724端口进行通讯的,底层调用uiautomator工具,在测试的时候服务端会给设备扔一个jar包就是appiumbootstrap.jar,会启动这个包,启动之后会在手机上创建一个socket服务,暴露的就是4724的端口;相对于socket服务来说,appium服务端又是一个客户端;

服务端的4724可以修改,设备上的不可以;服务端收到脚本传递过来的命令之后,通过电脑上的4724端口,想设备上的4724端口发送指令,appiumbootstrap.jar收到指令后回去完成点击,滑动其他的操作,完成之后再通过服务给服务端一个相应。服务端收到之后再去相应脚本

服务端和脚本如何通讯?

通过接口来访问,意味着服务端和脚本可以不在一起,只要能访问到127.0.0.1:4723这个地址就可以

 作为一位过来人也是希望大家少走一些弯路,希望能对你带来帮助。(WEB自动化测试、app自动化测试、接口自动化测试、持续集成、自动化测试开发、大厂面试真题、简历模板等等),相信能使你更好的进步!

留【自动化测试】即可【自动化测试交流】:574737577(备注ccc)icon-default.png?t=N4P3http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=2szVdJcy6VnqVi_zYhQd8aI9U5yfUv34&authKey=leQfP2SBsSV1%2FUzpd2OtJhdk%2F0SH%2FzEdi8uCVyM4q8w%2FHQEA1WUh3aqS9kyXZxUH&noverify=0&group_code=574737577

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Varnish开源HTTP反向代理缓存服务器

第三阶段基础 时 间:2023年6月13日 参加人:全班人员 内 容: Varnish 目录 Varnish 端口号:TCP/6081 TCP/6082 配置文件:/etc/varnish/default.vcl 安装部署: 测试功能: Varnish V…

6月14日晚 19:00公开课直播 | 入门必看:40min 掌握低代码基础功能

大家好,新一期「ONEIN 公开课」要和大家见面啦! Onein 公开课介绍 Onein 公开课,是万应低代码开设的直播课堂,专注低代码领域,希望帮助每一位用户更好的使用万应低代码。 随着低代码的兴起,低代码这一名词…

从小白到大神之路之学习运维第39天---第三阶段---MongoDB非关系型数据库(概述、安装、设置管理员、简单操作、配置文件说明,备份和还原)

第三阶段基础 时 间:2023年6月13日 参加人:全班人员 内 容: 目录 MongoDB概述 端口号:TCP/27017 配置文件:/etc/mongod.conf MongoDb安装部署 MongoDB设置密码 MongoDB操作命令与说明 配置文件说明 备份操作 1. 热备…

chatgpt赋能python:Python怎么居中对齐

Python怎么居中对齐 在Python中,输出对齐是一项基本功能。当我们想要打印表格或美化输出时,居中对齐是一个常见的要求。本文将介绍如何使用Python进行居中对齐,以及一些相关的技术和应用。 如何居中对齐? 要在Python中实现居中…

TypeScript知识汇总

一、ts简介 1、什么是ts 2、ts增加了什么 二、TypeScript开发环境搭建 注:如果npm i运行报错,需要以管理员身份运行一次,以上主要就是tsc xxx.ts 三、ts的基本类型——ts相当于是给js可以指定类型 //number、string、boolean等常用类型&am…

[游戏开发][Unreal]项目启动

新建项目时会有 [项目名].uproject文件,鼠标右键该文件点击Switch Unreal Engine version 如果你的 [项目名].uproject文件是个纯白的图标,证明没有关联到Unreal,该怎么办呢 使用搜索工具搜UnrealVersionSelector.exe 或者直接去你的UE5安装目…

在华为外包待了3年,我秃了,但没变强...

我25岁,中级测试,外包,薪资13.5k,人在上海。内卷什么的就不说了,而且人在外包那些高级精英年薪大几十的咱也接触不到,就说说外包吧。 假设以我为界限,25岁一线城市13.5k,那22-24大部…

J.A.Woollam光谱型椭偏仪电源维修M-2000XI

M-2000系列光谱椭圆仪是为满足薄膜表征的需求而设计的。RCE技术结合了旋转补偿器椭圆仪和CCD检测,在几分之一秒内收集整个光谱(数百个波长),并有多种配置。擅长于从原位监测和过程控制到大面积均匀性绘图和通用薄膜表征的椭偏仪。…

mac m1(arm)安装brew(Homebrew)

安装 使用国内脚本安装 /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"安装完成后使用brew安装tcping试试 brew install tcping发现报错 Error: Cannot install in Homebrew on ARM processor in Intel default prefi…

应急指挥调度系统之指挥中心是由什么构成的

应急指挥调度系统是应急管理的重要组成部分,而指挥中心则是应急指挥系统的控制中枢,可以说是应急指挥调度系统体系中的大脑,应急管理中的所有应急指令都会从指挥中心发出,作为应急指挥系统的控制中枢,应急指挥调度系统…

5款国产优质软件,满足工作效率提升需求,你值得拥有

不少人对国产软件的印象,还停留在各种弹窗、各种捆绑,想要提升工作效率,只能使用国外的软件。今天给大家分享5款国产优质软件,不仅没有各种弹窗、捆绑,还能满足工作效率提升需求。 亿图脑图MindMaster MindMaster是一款…

聊聊如何利用服务定位器模式按需返回我们需要的服务实例

前言 什么是服务定位器模式 服务定位器是一个了解如何提供各种应用所需的服务(或组件)的对象。在服务定位器中,每个服务(或组件)都只有一个单独的实例,并通过ID 唯一地标识。 用这个 ID 就能从服务定位器中…

JVM 调优分析 如何进行JVM调优

文章目录 1.为什么需要进行JVM调优?2.什么情况下可能需要JVM调优3.JVM调优参数4.JVM调优参数设置参考5.JVM内部结构1. 类加载器(Class Loader)2. 运行时数据区(Runtime Data Area)3. 垃圾收集器(Garbage Co…

css常见布局方式

css常见布局方式 0、前言1、两栏布局1.1 浮动 margin1.2 浮动 BFC(overflow: hidden)1.3 定位 margin-left1.4 给父容器设置flex布局,左盒子固定宽度,然后给右子元素设置 flex: 1。1.5 table布局 2、三栏布局2.1 float布局2.2 …

小红书数据分析:流量手到擒来,热点创作大解密!

年中大促618接近尾声,对小红书来说,这次的“反向”营销博得满堂彩。 为了呼吁大家不要冲动消费,线下举办了“反冲动俱乐部”活动,以“365天无理由退货”、“退货的商品可兑换成小红书现金券”等玩法在一众促销信息中呈现差异化内…

如何从Prometheus单独提取个别数据持久化到InfluxDB

背景 首先解释一个问题,为什么会选择让InfluxDB来持久化Prometheus的数据,直接存在Prometheus中不行吗?下面是Claude的回答,我来总结一下: 1)InfluxDB提供了更强大的Flux查询语言,比如提供了复…

长鑫存储面试(部分)

你平时写代码时,如何保证代码可靠、可复用、可扩展、可维护?有总结经验吗,请举例说明。参考答案 by newBing: 编写文档:编写文档是保证代码可维护性的重要手段。文档应该包括代码的设计思路、实现细节、使用方法等。 遵…

NeRF系列(2):NeRF in the wild : Neural Radiance Fields for Unconstrained Photo Collections论文解读与公式推导

NeRF in the Wild: Neural Radiance Fields for Unconstrained Photo Collections 论文:https://openaccess.thecvf.com/content/CVPR2021/papers/Martin-Brualla_NeRF_in_the_Wild_Neural_Radiance_Fields_for_Unconstrained_Photo_CVPR_2021_paper.pdfhttps://op…

pyspark安装教程

pyspark安装教程 一、Windows下配置pyspark环境1.1 JDK下载安装1.2 Scala下载安装1.3 spark下载安装1.4 Hadoop下载安装1.5 pyspark下载安装 二、pyspark原理简介 一、Windows下配置pyspark环境 在python中使用pyspark并不是单纯的导入pyspark包就可以实现的,而是需…

从0到字节跳动30W年薪,我在测试行业“混”的第5个年头····

一些碎碎念 什么都做了,和什么都没做其实是一样的,走出“瞎忙活”的安乐窝,才是避开弯路的最佳路径。希望我的经历能帮助到有需要的朋友。 在测试行业已经混了5个年头了,以前经常听到开发对我说,天天的点点点有意思没…