appium自动化的工作原理

1. Appium组件

Appium Server

Appium是一个C/S结构,包括Server和Client。Appium Server是Appium的服务端,作为一个Web接口服务,使用Node.js实现。

Appium Desktop

Appium Server的图像界面,可设置启动or停止服务器、查看日志,可使用inspect查看应用程序的元素。

Appium Client

Appium Client作为客户端,会给服务端Appium Server端发送请求会话来执行自动化任务。类似使用浏览器访问网页,可使用不同的客户端浏览器(IE/Firefox/Chrome...)访问同一个网站,通过操作发送请求到服务器来获取数据。

2.运行原理

Appium是在手机操作系统自带的测试框架基础上实现的,Android和iOS的系统上使用的工具分别如下:

  • Android(版本>4.3):UIAutomator,Android 4.3之后系统自带的UI自动化测试工具。
  • Android(版本≤4.3):Selendroid,基于Android Instrumentation框架实现的自动化测试工具。
  • iOS:UIAutomation(instruments框架里面的一个模板),iOS系统自带的UI自动化测试工具。

运行原理如下:

①客户端运行脚本的时候,调用任何的appiumAPI,都会向Appium Server端post一条HTTP请求,请求内容就是根据webdriver wire protocol协议规定的一条JSON格式的数据;

②当开启appium服务器的同时就开启了监听端口,Appium Server端接收到请求后,解析出JSON数据并发送到手机端;

③手机端上已经由BootStrap.jar(iOS为BootStrip.js)开启的socket服务器监听相应的端口,BootStrap.jar在appium每个session第一次访问手机端的时候会自动安装;

④手机端接收到对应的请求后,通过BootStrap.jar翻译成UIAutomator能执行的命令,然后通过UIAutomator处理并操作APP完成测试。

3.Appium中的几个重要概念

  • client: 其实就是发起 command 的一端,狭义的可以理解为python、java等编写的代码。
  • appium server: 专门用来监听并接收来自client端的请求,转发请求并控制移动设备执行测试,默认开启并监听4723接口.。
  • Sessionsession就是一个会话,在appium中,所有工作永远都是在session start后才可以进行的。而要启动一个 session 需要传入 Desired Capabilities 获取一个全局唯一的 session id,这个id指定了你的浏览器或者移动设备。
  • Desired Capabilities是一些发送给 Appium 服务器的键值对集合(比如 map 或 hash),它告诉服务器我们想要启动什么类型的自动化会话。

它告诉 appium server 这样一些事情:

  • 本次测试是启动浏览器还是启动移动设备?

  • 是启动 Andorid 还是启动 iOS ?

  • 启动 Android 时,App 的 package 是什么?

  • 启动 Android 时,App 的 Activity 是什么?

  • Bootstrap:

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

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

最后,bootstrap处理的是从PC端传过来的命令。

appium的架构原理如图所示,由客户端和服务端组成,客户端与服务端通过JSON进行通信。

一、Appium加载的过程图解

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执行命令

二、初步认识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墙)

三、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端过来的命令,而非一个文件。

四、所使用的技术

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

文章转载:

appium自动化的工作原理

appium自动化的工作原理相关推荐

  1. 了解appium自动化的工作原理(uiautomator)

    一.Appium加载的过程图解 Appium的原理 WebDriver script:我们的测试脚本(java or python) Appium: 会首先开启一个监听4723端口的server,接收 ...

  2. Appium - 自动化测试框架 - 工作原理、环境搭建

    前言 Appium是移动端的UI自动化测试框架,基于C/S模式,特点是支持跨平台(安卓,ios),支持多语言(对java,python都有支持的API).本文系博主对于该框架的部分学习记录. 一.什么 ...

  3. Appium 介绍以及工作原理

    目录 1.什么是Appium: 2.Appium各类组件: 3.Appium理念: 4.三张图了解 Appium工作原理: 1.什么是Appium: appium是一个移动端的自动化测试框架,可用于测 ...

  4. 【Appium】Appium工作原理

    参考:http://www.cnblogs.com/zhjsll/p/5698878.html 原作者写的很好,所以直接放在这里. 一.什么是Appium Appium是一个开源.跨平台的测试框架,可 ...

  5. Appium学习日记(一)——Appium工作原理及其主要组件

    Appium工作原理及其主要组件 Appium的工作原理(how Appium works)   Appium的核心是一个服务器,它侦听符合API规范WebDriver的传入HTTP请求.对于那些过去 ...

  6. 简述流水线基本工作原理 计算机,自动化专业计算机技术基础作业题(50题)

    自动化专业计算机技术基础作业题(50题) (3页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 江西理工大学2012级自动化专业作业题1. 简 ...

  7. ansible自动化运维工具的详细介绍、使用、工作原理、安装方式、与被管理节点建立信任关系等等

    ansible简介 Ansible 是一个IT自动化工具,它能够配置系统.部署软件.编排更复杂的it任务,如连续部署或零停机时间滚动更新 Ansible用python编写,尽管市面上已经又很多可供选择 ...

  8. 曲鸟全栈UI自动化教学(四):Selenium工作原理及Webdriver对浏览器的配置和操作

    一.前言 上篇文章我们学习了Selenium页面操作原理及如何高效的进行元素定位 那Selenium的工作原理又是什么?是如何驱动浏览器的呢?这篇文章为你讲解Selenium工作原理及Webdrive ...

  9. Appium工作原理简介

    Appium工作原理 一.Appium简介 Appium是一个开源.跨平台的自动化测试工具,用于测试原生和轻量移动应用,支持 iOS, Android 和 FirefoxOS 平台.Appium驱动苹 ...

最新文章

  1. creo JAVA_Creo 4.0二次开发工具框架搭建
  2. android zip解压缩(含有子目录)
  3. 《Android App开发入门:使用Android Studio 2.X开发环境》——导读
  4. C#_数据库基本交互
  5. hdu 5410(背包问题变形)
  6. linux centos7使用,linux之centos7防火墙基本使用
  7. 重庆市计算机二级证丢失,重庆计算机二级证书丢了怎么办
  8. 手机计算机数字显示在桌面上,手机计算器有哪些使用方法
  9. keepalived 安装
  10. (四)基于Multisim的超外差接收系统:检波器的设计
  11. 使用MV制作最简单的游戏:我要做游戏(1)
  12. 为什么我们要学习Microsoft Graph
  13. 51单片机实现生日快乐歌
  14. 文献阅读_Radiogenomic analysis of vascular endothelial growth factor in patients with diffuse gliomas
  15. mac 重置mysql root密码_Mac下忘记Mysql root密码重置
  16. git 查看提交版本以及回滚到指定的版本
  17. javaweb网页上传图片并显示在页面上,并在服务端存到磁盘(base64编码解码)
  18. Windows认证体系解读
  19. 智慧农业总体实施方案
  20. window自带print打印设置

热门文章

  1. 极客大学算法课-01
  2. PAT 乙级 (Basic Level) Practice 1014 福尔摩斯的约会 解题思路
  3. 2013年9月、10月找工作总结篇
  4. 郭德纲最新相声:我要踢足球
  5. KALI LINUX2021环境下使用sqlmap进行DVWA中的sql注入(安全等级LOW)
  6. P-C P-S -1
  7. 微信公众平台测试号的url和token原理
  8. PlatoFarm链上数据优异,最真实的元宇宙
  9. 文盘Rust -- 领域交互模式如何实现
  10. mysql工资修改为空_mysql数据库技术1——基本的增删查改的sql语句