文档章节

万物有源_Appium框架原理浅析

维他ViTa
 维他ViTa
发布于 03/17 12:50
字数 592
阅读 56
收藏 0

其实我觉得Appium的Log已经格外人性化了,直接看debugLog,就可以了解流程和原理了。

一、安卓平台图解

Appium原理

二、原理

Appium是由Nodejs编写的,集成了现有优秀框架,以Selenium WebDriver的协议统一起来,遵循RESTful设计风格web服务器,它接受客户端的连接,接收客户端的命令,在手机设备上执行命令,然后通过HTTP的响应收集命令执行的结果。

(1)最上面的Client端可以是多种语言编写,它类似于selenium webdriver,封装了selenium的API,并添加了部分的新的API,我们可以依据这些API编辑自动化脚本。

(2)Json Wire Protocol是一种协议,遵循REST风格,以JSON方法进行传输,是一系列的键值对,遵循W3C WebDriver Spec设计风格。

(3)中间是起的Appium的服务,Appium在这边起了一个Server(4723端口),在这里提供了一套web服务,Appium Server接收web driver标准请求,解析请求内容,调⽤用对应的uiautomator响应操作。

(4)Appium server可以把请求接收并转义转发给中间件Bootstrap.jar,它是用java写的,安装在手机上。Bootstrap 接收appium 的命令(4724端口),最终通过调⽤用UiAutomator的命令来实现对手机的操作。

(5)Bootstrap可以理解为它是一个uiautomator的测试脚本,它的入口类Bootstrap继承于UiAutomatorTestCase,所以UiAututomator可以正常运行它,它也可以正常的使用uiautomator的方法,这个就是appium的命令可以转换成uiautomator的命令的关键;其次,它是一个socket服务器,它专门监听4724端口过来的appium的连接和命令数据,并把appium的命令转换成uiautomator的命令来让uiautomator进行处理;最后,它处理的是appium从pc端过来的命令,是一系列的请求。

(6)最后执⾏行的结果以Json Wire Protocol,由Bootstrap返回给appium server,再返回给Client端,Client会汇总操作结果。

本文转载自:https://www.jianshu.com/p/71ab7fe2988c

维他ViTa
粉丝 14
博文 145
码字总数 45749
作品 0
深圳
程序员
私信 提问
Appium框架解析

1. Appium框架概况 Appium是一个开源的、跨平台的自动化测试框架,该框架适用于Native Application、Mobile Web Application或Hybrid Application的自动化测试。Native Application指的是基于...

测试_给你一颗小瓜子
2017/11/23
0
0
Appium基础认识

本文介绍了Appium相关的一些工具的概念以及彼此的关系,方便对appium有一个总体的认识。内容包括了JUnit,TestNG简介以及Appium的基本工作原理。 自动化工具的比较: 备注:由于需要在AWS D...

一剑围城
2017/09/26
0
0
Spring Boot 2.0 自动配置原理浅析

Spring Boot 2.0 自动配置原理浅析 泥瓦匠BYSocket2017-12-221 阅读 SpringJava技术 本章内容 外化配置和自动配置 自动配置原理浅析 Starter 组件浅析 小结 阅读时间:6 分钟 摘录:至简,记...

泥瓦匠BYSocket
2017/12/22
0
0
Appium移动自动化框架

摘要: Appium 是一个移动端自动化测试开源工具,可以针对不同的平台用一套API来编写测试用例。本文对Appium自动化测试框架的功能进行了概括。 本文选自《软件自动化测试开发》 Appium 框架的...

zouhui1003it
2018/01/05
0
0
早前学习Java记录

Spring 对 iBATIS 的支持】 Spring 通过 DAO 模式,提供了对 iBATIS 的良好支持。 SqlMapClient:是 iBATIS 中的主要接口,通过 xml 配置文件可以让 Spring 容器来管理 SqlMapClient 对象的创...

大风厂蔡成功
2016/07/10
43
0

没有更多内容

加载失败,请刷新页面

加载更多

JS--function

一、声明提前(hoist) 在js程序开始执行前,引擎会查找所有var声明的变量和function声明的函数,集中到当前作用域顶部集中创建,赋值留在原地 二、三种创建函数的方式 1、声明方式创建函数-...

wytao1995
今天
4
0
微服务之间调用控制器注解类型的差异

今天在一个业务服务通过Feign调用文件服务上传文件时遇到了几个问题: 1. 提示http请求头过大的问题; 此时需要修改bootstrap.yml,加入 server: max-http-header-size: 10000000 用以放大...

不再熬夜
今天
6
0
用 4G 工作是什么体验

七月开始,因为工作原因,在公司附近租了个住处,方便工作。离公司近了,感觉就是不一样,之前每天 5:30 就要起床赶地铁,现在可以睡到自然醒,一看才 7 点,悠闲的起床洗漱,踱步到公司,都...

zzxworld
今天
6
0
sonar报错volatile

问题发生 原先代码如下: //认证授权码private static volatile String AUTHORIZATION_CODE = "init"; git push 之后,sonar认为这是个bug检测报告截图如下: 分析排查 解释说明: Markin...

开源小菜鸟2333
今天
5
0
《Java实践指南》--读后

闲读《Java实践指南》... 1.lvy 某些项目中能够看到ivy.xml。早期使用ant的项目中,常常用ivy.xml来下载项目依赖。 2.ant 作为java程序员,应该都知道ant,虽然可能用过的人不多。为什么ant...

RippleChan
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部