• 0
  • 0
分享
  • 了解appium自动化的工作原理——软件测试圈
  • TIMI 2022-04-13 14:15:54 字数 1909 阅读 1086 收藏 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、软件的易测试程度2、测试人员和开发人员的经验3、必须坚持的质量标准4、研发测试流程成熟度阿常碎碎念:以上,代表阿常个人观点。看完今天的分享对你是不是有所启发呢,有任何想法都欢迎大家后台私信阿常,一起探讨交流。
            0 0 1194
            分享
          •   消息源 @i 冰宇宙近日在 X 平台上发布推文,在评论三星业界首款 10.7Gbps LPDDR5X DRAM 内容时表示,明年推出的 Galaxy S25 基础款手机依然 8GB 内存起步。  国内安卓手机内存早就“卷”到 12GB 起步,而且不断推高到 16GB、24GB 等,但三星的 Galaxy S 系列依然是 8GB 起步,因此给人的感觉是“不思进取”,也有不少网友调侃三星“被制裁”了。  如果真的如消息源所曝料的,明年三星 Galaxy S25 基础款继续 8GB 内存起步,那么即便采用更高规格,对于消费者的吸引力会大打折扣。  查询公开信息,该消息源今天还表示三星计划将 Go...
            0 0 580
            分享
          • 读者提问:如何做 APP 安装测试 ?阿常回答:这个问题我分别从 1、安装方式;2、安装平台;3、正常流程安装;4、异常流程安装 这四个方面来回答。一、安装途径tips:安装完毕请确认你安装的版本是正确的版本!一)官方渠道验证1、通过扫描二维码的方式下载安装。2、通过官网主页的 http 链接下载安装。3、从其他第三方平台下载安装。二)测试环境验证测试环境可以拿开发给的 apk 或者 ipa 包直接安装。二、安装平台1、Android 平台(包括EMUI、MIUI、OriginOS、ColorOS 等等)2、iOS 平台三、正常流程安装1、安装过程中出现的提示信息...
            0 0 1188
            分享
          •   常言道,名正则言顺。对于一个概念,如果它没有恰当的名字,就会增加理解的难度,甚至容易引起歧义。  在这些年,不管是写公众号还是与同行交流,我都发现软件测试中的一个重要概念存在着“名不正,言不顺”的问题。这个重要概念就是回归测试。  到底什么是回归测试?为什么叫回归测试?据我观察,许多的答案都不能让人信服。今天,是时候为“回归测试”正个名了。  要理解“回归测试”,先要理解“回归”。回归,是常用的汉语词汇。它有两种含义。第一种是归还,返回的意思。例如:香港回归祖国,北回归线,回归初心等。这种含义大家都非常熟悉。  另外一种含义,熟悉的人就少一些。它来自数学领域,表示研究随机变量相互关系的统计...
            10 10 882
            分享
          •   Incase 是一家以前专注于为苹果市场提供产品的公司,现在它将重新推出微软配件产品组合。微软公司将只为新设备冠名,因此我们可能会看到在质量和可靠性方面有些不同的做法。  Incase 和微软在今年早些时候公开了新的合作关系。现在,这家设计公司宣布将于 2024 年第四季度正式推出新产品,提供用户多年来熟知(并可能喜爱)的"知名"个人电脑配件的全新组合。  官方新闻稿称,Incase 母公司 Onward Brands 已获得微软全部配件组合的许可权和相关知识产权。该公司将自行生产所需的配件,以Incase 品牌销售最终产品,并在外壳上印上"Designed ...
            0 0 146
            分享
      • 51testing软件测试圈微信