文档章节

appium和boostrap通信过程数据分析

 酒醉东坡
发布于 2016/07/19 08:48
字数 590
阅读 10
收藏 0


这篇只分析appium和手机的通信过程,主要是数据交换的一个过程分析。

 这个过程手机端bootstrap充当socket-server端,监听连接,appium充当socket-client端,主动去和手机连接,并和手机端boostrap通信。

 

首先是最简单的,最底层的自动化测试模式,一般分两步:

第一步:查找元素

第二部:操作元素

 

通信过程就是:

第一步:Appium首先发送json字符串,该字符串带有元素的某些标志,如:

{"cmd": "action","action": "find","params": {"strategy""class name","selector": "android.widget.ImageView","context":"", "multiple":false}}

注意上下文context参数,要设置成基元素的elementid,第一层则为空。

该字串指定查找的方式为通过class name,且class name等于android.Widget.ImageView的元素,false表示元素个数唯一。

Boostrap端接收到这个数据后,会调用uiautomator去查找符合条件的元素,然后返回该元素的elementid,数据格式:{"value":{"ELEMENT":"1"},"status":0},如果multiple为true的话,则返回格式{"value":[{"ELEMENT":"1"},{"ELEMENT":"2"}],"status":0}

 

第二步:就是对元素的操作,也是向手机端发送json字符串,格式如:

{"cmd":"action","action":"element:click","params":{"elementId":"4"}}

其中click是对元素的操作类型,4是元素的elementid,是从第一步中获取到的。如果手机端操作成功会返回{"value":true,"status":0}

这就是一个基本的操作所需要的数据通讯过程了,这个过程可以手动用socket模拟实现。

 

其他还有一些复杂的操作,像flickscroll等都类似,还有一些直接没有第一步,直接进行操作的如按键,swipe等,略过不提。

swipex-xx-yy-xy-ystep),只需要向socket写入以下数据:

{"cmd": "action","action": "swipe","params": {"startX": start_x, "startY": start_y,"endX": stop_x, "endY": stop_y, "steps": step}}

则手机就会执行swipe操作。

 

 

数据总结:

 

1

查找元素的strategy有以下固定的几种:

ID = "id"
XPATH = "xpath"
LINK_TEXT = "link text"
PARTIAL_LINK_TEXT = "partial link text"
NAME = "name"
TAG_NAME = "tag name"
CLASS_NAME = "class name"
CSS_SELECTOR = "css selector"

而这些字段的value则需要根据apk源码或者uiautomator去查看了。

 

 

2,所有的操作类型列表(pyappium部分还没有实现):

Clear

Click

CompressedLayoutHierarchy

Drag

Find

Flick

getAttribute

getDataDir

getDeviceSize

getLocation

getName

getSize

getText

Longpresskeycode

Multipointergesture

Opennotification

Orientation

Pinch

Pressback

Presskeycode

Scroll

Settext

Source

Swipe

Takescreenshot

Touchdown

Touchup

Touchmove

Touchlongclick

Touchevent

Updatestrings

Waitforidle

Wake

 

 

© 著作权归作者所有

粉丝 1
博文 30
码字总数 14441
作品 0
郑州
程序员
私信 提问
Android,使用Appium,进行自动化测试

注意,如果app里面有WebView,那么无法通过这个appium, 定点测试Webview 加载的某一个element;这个问题,已经搞2天了, 但是并没有解决,如果大家有解决方案的话, 恳请赐教! 贴上学习链接...

alphet
02/25
0
0
Appium框架解析

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

测试_给你一颗小瓜子
2017/11/23
0
0
ios界面自动化工具--Appium

ios界面自动化工具--Appium Appium是一款开源的移动端自动化测试框架,支持Android和Ios,之前简单介绍过Appium,链接http://www.yeetrack.com/?p=639。最近在做ios的自动化测试,再详细记录一...

youthflies
2014/10/29
0
0
Appium移动自动化框架

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

zouhui1003it
2018/01/05
0
0
自动化测试技术解决方案

子曰“工欲善其事,必先利其器”,有一把顺手的“兵器”,能让我们的学习和工作达到事半功倍的效果 一、技术解决方案要求说明 不管选择什么技术解决方案,总得来说,应该要满足下面几个条件:...

阿阳啊啊
2017/11/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

“旧城改造”的背后——银泰新零售阿里云解决方案(上)

相关免费课程《银泰新零售上云解决方案精讲》上线中 立足实战 讲透经典案例 助你快速理解新零售 第一节学习地址 第二节学习地址 传统线下商业体上云的案例 与其说银泰上云,倒不如说银泰“旧...

阿里云官方博客
31分钟前
2
0
记一次升级Oracle驱动引发的死锁

问题描述 近期项目需要从虚拟机环境迁移到容器环境,其中有一个项目在迁移到容器环境之后的两天之内出现了2次“死锁(deadlock)”的问题,部分关键日志如下: Found one Java-level deadlock:...

ksfzhaohui
33分钟前
14
0
MySQL 中的 information_schema 数据库

欢迎查看原文 - 本博客仅记录 https://blog.csdn.net/kikajack/article/details/80065753 -- 是否开启bin_log日志: off为关闭-- show variables like 'log_%'; show variables like '......

莫库什勒
41分钟前
1
0
Random在高并发下的缺陷以及JUC对其的优化

Random可以说是每个开发都知道,而且都用的很6的类,如果你说,你没有用过Random,也不知道Random是什么鬼,那么你也不会来到这个技术类型的社区,也看不到我的博客了。但并不是每个人都知道...

编程SHA
45分钟前
2
0
T5大牛带你解析:如何实现分布式技术

1.分布式事务 2. 分布式锁 Java 原生 API 虽然有并发锁,但并没有提供分布式锁的能力,所以针对分布式场景中的锁需要解决的方案。 分布式锁的解决方案大致有以下几种: 基于数据库实现 基于缓...

李红欧巴
57分钟前
35
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部