appium自动化的工作原理(1)

用appium开发移动端自动化测试脚本这么长时间,还没有认证的了解下它的原理是什么,到底是如何实现的呢?

1、先看一个Appium加载的过程图解(来自:了解appium自动化的工作原理--https://blog.csdn.net/jffhy2017/article/details/69220719/)

Appium的加载过程

  1)调用Android adb完成基本的系统操作

  2)向Android上部署bootstrap.jar

  3)Bootstrap.jar Forward Android的端口到PC机器上

  4)Pc上监听端口接收请求,使用webdriver协议

  5)分析命令并通过forward的端口发给bootstrap.jar

  6)Bootstrap.jar接收请求并把命令发给uiautomator

  7)Uiautomator执行命令

2、初步认识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安装(FQ墙)

3、bootstrap介绍

1)Bootstrap作用:

Bootstrap是Appium运行在安卓目标测试机器上的一个UiAutomator测试脚本,该脚本的唯一一个所做的事情是在目标机器开启一个socket服务器来把一个session中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端过来的命令,而非一个文件。

4、所使用的技术

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

iOS使用uiautomation

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

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

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

五、Capabilities

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

二、Appium工作原理

2.1 Android

在Android端,appium基于WebDriver协议,利用Bootstrap.jar,最后通过调?用UiAutomator的命令,实现App的自动化测试。

UiAutomator测试框架是Android SDK自带的App UI自动化测试Java库。

另外由于UiAutomator对H5的支持有限,appium引入了chromedriver以及safaridriver等来实现基于H5的自动化。

appium 在android端工作流
  1. client端也就是我们 test script是我们的webdriver测试脚本。
  2. 中间是起的Appium的服务,Appium在服务端起了一个Server(4723端口),跟seleniumWebdriver测试框架类似, Appium?持标准的WebDriverJSONWireProtocol。在这里提供它提供了一套REST的接口,Appium Server接收web driverclient标准rest请求,解析请求内容,调?用对应的框架响应操作。
  3. appium server会把请求转发给中间件Bootstrap.jar,它是用java写的,安装在手机上.Bootstrap监听4724端口并接收appium的命令,最终通过调?用UiAutomator的命令来实现。
  4. 最后Bootstrap将执行的结果返回给appium server。
  5. appium server再将结果返回给 appium client。

2.2 ios

在IOS端,appium同样使?WebDriver的一套协议。

与Android端测试框架不同的是,appium ios封装了apple的Instruments框架,主要用了Instrument里的UIAutomation(Apple的?自动化测试框架),然后在设备中注?入bootstrap.js进?行监听。

appium 在ios端工作流
  1. client端 依然是 test script是我们的webdriver测试脚本。
  2. 中间是起的Appium的服务,Appium在服务端起了一个Server(4723端口),跟seleniumWebdriver测试框架类似, Appium?持标准的WebDriverJSONWireProtocol。在这里提供它提供了一套REST的接口,Appium Server接收web driverclient标准rest请求,解析请求内容,调?用对应的框架响应操作。
  3. appium server调用instruments.js 启动?一个socketserver,同时分出一个?子进程运?instruments.app,将bootstrap.js(一个UIAutomation脚本)注?入到device?于和外界进行交互
  4. 最后Bootstrap.js将执行的结果返回给appium server
  5. appium server再将结果返回给 appium client。

所以我们可以看到android与ios区别在于appium将请求转发到bootstrap.js或者bootstrap.jar.然后由bootstrap驱动UIAutomation和UiAutomator去devices上完成具体的动作。

原文地址:https://www.cnblogs.com/johnson-yuan/p/9367549.html

时间: 2024-10-09 12:55:11

appium自动化的工作原理(1)的相关文章

计算机的基本组成及工作原理

计算机的基本组成及工作原理 1.3.1 计算机系统的组成 计算机系统是由硬件系统和软件系统两大部分组成,这一节将分别介绍计算机硬件系统和软件系统. 计算机硬件是构成计算机系统各功能部件的集合.是由电子.机械和光电元件组成的各种计算机部件和设备的总称,是计算机完成各项工作的物质基础.计算机硬件是看得见.摸得着的,实实在在存在的物理实体. 计算机软件是指与计算机系统操作有关的各种程序以及任何与之相关的文档和数据的集合.其中程序是用程序设计语言描述的适合计算机执行的语句指令序列. 没有安装任何软件的计

PHP和Fastcgi/php-fpm的工作原理-理论部分 不涉及实验

标题:PHP概述笔者:郑彦生时间:2014-05-16--------------- ---|谢谢马哥教育|--- 祝马哥的事业一帆风顺. MIME,HTTP,HTML MIME:N能够让http传送非文本信息:如mp3http:只能解析html的文档,对于多媒体mp3等,浏览器需要安装插件 或者 web浏览器能够调与之匹配的web程序进行解码注意:浏览器本身不能播放音乐,要么有自带的插件,要么主机上其它的程序可以播放音乐,而浏览器可以调用这个程序来执行播放音乐服务器发过来的一般都是静态的文本

数据库SQL SELECT查询的工作原理

作为B/S架构的开发人员,总是离不开数据库.一般开发员只会应用SQL的四条经典语句:select,insert,delete,update.但是我从来没有研究过它们的工作原理,这篇我想说一说select在数据库中的工作原理. B/S架构中最经典的话题无非于三层架构,可以大概分为数据层,业务逻辑层和表示层,而数据层的作用一般都是和数据库交互,例如查询记录.我们经常是写好查询SQL,然后调用程序执行SQL.但是它内部的工作流程是怎样的呢?先做哪一步,然后做哪一步等,我想还有大部分朋友和我一样都不一定

前端必读:浏览器内部工作原理

前端必读:浏览器内部工作原理 作者: Tali Garsiel  发布时间: 2012-02-09 14:32  阅读: 56974 次  推荐: 88   原文链接   [收藏] 目录 一.介绍 二.渲染引擎 三.解析与DOM树构建 四.渲染树构建 五.布局 六.绘制 七.动态变化 八.渲染引擎的线程 九.CSS2可视模型 英文原文:How Browsers Work: Behind the Scenes of Modern Web Browsers 一.介绍 浏览器可以被认为是使用最广泛的软

浏览器的工作原理解析

PART1 有关浏览器的内核 一.Trident内核,代表产品IE Trident内核又称为IE内核.是微软开发的一种排版引擎.1997年与IE4一起诞生.虽然它相对于其它浏览器核心还比较落后,但trident一直在被不断地更新和完善.而且除IE外,许多产品都在使用Trident核心,比如Windows的HELP程序.RealPlayer.Windows Media Player.Windows Live Messager.Outlook Express等. 使用此内核的其它浏览器有:IE.傲游

如何更有效使用 Rational AppScan 扫描大型网站,第 1 部分: 工作原理及技术分析

Rational AppScan 工作原理 Rational AppScan(简称 AppScan)其实是一个产品家族,包括众多的应用安全扫描产品,从开发阶段的源代码扫描的 AppScan source edition,到针对 Web 应用进行快速扫描的 AppScan standard edition,以及进行安全管理和汇总整合的 AppScan enterprise Edition 等.我们经常说的 AppScan 就是指的桌面版本的 AppScan,即 AppScan standard e

浏览器内部工作原理

转:http://kb.cnblogs.com/page/129756/#chapter9 目录 一.介绍 二.渲染引擎 三.解析与DOM树构建 四.渲染树构建 五.布局 六.绘制 七.动态变化 八.渲染引擎的线程 九.CSS2可视模型 英文原文:How Browsers Work: Behind the Scenes of Modern Web Browsers 一.介绍 浏览器可以被认为是使用最广泛的软件,本文将介绍浏览器的工作原理,我们将看到,从你在地址栏输入google.com到你看到g

Spring Boot 揭秘与实战 源码分析 - 工作原理剖析

文章目录 1. EnableAutoConfiguration 帮助我们做了什么 2. 配置参数类 – FreeMarkerProperties 3. 自动配置类 – FreeMarkerAutoConfiguration4. 扩展阅读 3.1. 核心注解 3.2. 注入 Bean 结合<Spring Boot 揭秘与实战 源码分析 - 开箱即用,内藏玄机>一文,我们再来深入的理解 Spring Boot 的工作原理. 在<Spring Boot 揭秘与实战 源码分析 - 开箱即用,内藏

ceph结构和工作原理

Ceph是统一分布式存储系统,具有优异的性能.可靠性.可扩展性.Ceph的底层是RADOS(可靠.自动.分布式对象存储),可以通过 LIBRADOS直接访问到RADOS的对象存储系统.RBD(块设备接口).RADOS Gateway(对象存储接口).Ceph File System(POSIX接口)都是基于RADOS的. Ceph存储系统的逻辑层次结构如下图所示: 自下向上,可以将Ceph系统分为四个层次: (1)基础存储系统RADOS(Reliable, Autonomic,Distribut