• 0
  • 0
分享
  • 了解appium自动化的工作原理——软件测试圈
  • TIMI 2022-04-13 14:15:54 字数 1909 阅读 1154 收藏 0

一、Appium加载的过程图解

图片 1.png

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这个地址就可以

 

作者:A丶咔咔
链接:https://zhuanlan.zhihu.com/p/151014417

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 1、引言因为小鱼在上一章节写了 多台appium的启动,然后就联想到 能不能搞一个多进程启动appium服务。于是乎~~那就搞起来~ ~关于并发的问题,小鱼写过专题文章《常见并发问题》《多线程并发》《多线程并发框架》但是呢,今天小鱼不写多线程并发,写个多进程并发在上代码之前,咱先弄清楚,多进程与多线程,到底有何区别:2、代码示例知道了多进程与多线程的区别, 我们就来写代码代码示例:# -*- coding: utf-8 -*- #@ auth : Carl_DJ #@ time : 2022-6...
            0 0 1712
            分享
          •   Instagram 正在为 Threads 开发一个成熟的网络应用程序,该程序将很快登陆 Windows 11 和 Windows 10 的微软应用商店。Instagram 的 Threads 应用程序在过去几个月里一直是新闻焦点,它是 Twitter 之外最方便用户使用的选择。就下载量和炒作而言,Threads 在推广上迄今已被证明是成功的,但在功能方面却落后于 Twitter 和其他基于文本的社交媒体应用。  Instagram 主管亚当-莫塞里(Adam Mosseri)表示,Threads 应用程序没有标签、完整的搜索功能或网络支持,但这种情况很快就会改变。在一系列关于 Threa...
            0 0 1056
            分享
          • 一、什么样的bug需要进行总结?1、线上遗漏的bug没有被测试发现而遗漏到线上的bug。其影响不言而喻,会直接影响用户的体验,影响产品的口碑,势必需要进行总结。2、非线上遗漏的bug。没有在规定的测试阶段发现,从而导致发现晚的bug,例如XX模块已经测试完毕,结果后来又发现该模块的新bug。这类bug会导致增加bug修改和验证的时间,从而有可能影响项目的整体进度,甚至导致项目delay。俗话说”人非圣贤,孰能无过“,软件是由人编写的,所以再所难免都会有问题,而我们所要做就是尽量避免出现问题,或者是避免出现重复的问题。对于软件测试人员来说分析BUG是非常好的一个措施,这样可以检测到测试人员在测试...
            0 0 3925
            分享
          •   做好缺陷(bug)的管理与跟踪的关键点,是要明确做这件事的目标:缺陷管理的目标是,通过工具辅助,详细记录和准确分类,便于进行数据统计和分析,从而帮助团队分析原因、进一步帮助团队持续改进和提升,而不是追责。  以下是具体的详细说明:  一、我们为什么需要进行缺陷管理与跟踪?  软件缺陷(bug)带来的影响可以包括以下几个方面:  1.用户体验受损:软件缺陷可能导致程序崩溃、功能失效、界面不友好等问题,影响用户使用体验。  2.生产效率降低:软件缺陷可能导致开发团队需要花费额外的时间和精力来修复问题,从而影响项目进度和生产效率。  3.成本增加:软件缺陷可能导致软件开发公司需要承担额外的成本来...
            0 0 820
            分享
          •   如果问软件测试有哪些前景,准确的说,应该是软件测试工程师的职业规划是什么样的。关于一些职业规划上的意见建议,我从下面几个方面梳理一下,供您参考。  1、软件测试行业的现状  2、目前业内人员的现状  3、软件测试工程师的职业规划  4、软件测试工程师的核心竞争力在哪  5、软件测试工程师如何不断提高自己的能力  大厂更加倾向于招收测试开发,更多的初级测试被外包吸收,只会手工测试的人员生存更加艰难。  在经历了18年的裁员潮之后,很多大厂及创业公司都在调整和优化自己的团队结构,特别是对于大厂来说,并不是简单地裁人,而是裁掉单一的手工测试,转而付出更高的薪酬来招收技术更好的测试开发人员。在这个...
            14 14 2222
            分享
      • 51testing软件测试圈微信