老李推荐:第6章3节《MonkeyRunner源码剖析》Monkey原理分析-事件源-事件源概览-命令翻译类
老李推荐:第6章3节《MonkeyRunner源码剖析》Monkey原理分析-事件源-事件源概览-命令翻译类
每个来自网络的字串命令都需要进行解析执行,只是有些是在解析的过程中直接执行了事,而有些是需要在解析后创建相应的事件类实例并添加到命令队列里面排队执行。负责这部分工作的就是命令翻译类。那么我们往下还是继续在MonkeySourceNetwork这个范畴中MonkeyCommand类是怎么一回事:

图6-3-1 MonkeyCommand族谱
图中间的MonkeyCommand是一个接口,主要定义了translateCommand这个方法,它接收的参数是一个字串命令以及参数的列表以及命令队列,所有实现类都必须实现这个方法来对命令字串进行解析翻译:
- 如果命令字串需要建立对应MonkeyEvent实例的,则将该命令字串翻译成对应的MonkeyEvent实例并加入到传进来的命令队列
- 如果命令字串不需要建立对应的MonkeyEvent实例的的,那么直接解析执行该命令字串,然后返回
|
命令字串格式 |
命令翻译类 |
MR是否支持 |
注释 |
|
touch down x y |
TouchCommand |
是 |
x代表x坐标,y代表y坐标 |
|
touch up x y |
TouchCommand |
是 |
同上 |
|
touch move x y |
TouchCommand |
是 |
同上 |
|
tap x y |
TapCommand |
是 |
同上 |
|
press name |
PressCommand |
是 |
Name代表按键名,如"MENU", "HOME", "SEARCH"等 |
|
key down name |
KeyCommand |
是 |
同上 |
|
key up name |
KeyCommand |
是 |
同上 |
|
getvar name |
GetVarCommand |
是 |
name 代表属性名 |
|
listvar |
ListViewsCommand |
是 |
|
|
type line |
TypeCommand |
是 |
line 代表输入字串 |
|
wake |
WakeCommand |
是 |
|
|
listViews |
ListViewsCommand |
是 |
|
|
queryview |
QueryViewCommand |
是 |
|
|
getRootView |
GetRootViewCommand |
是 |
|
|
getViewWithText |
GetViewsWithTextCommand |
是 |
|
|
done |
N/A |
是 |
测试完成,Monkey收到命令后会停止Socket监听 |
|
quit |
N/A |
是 |
测试请求退出,Monkey收到后不会停止Socket监听, |
|
flip open |
MonkeyFlipEvent |
否 |
MonkeyRunner不支持发送这两个命令 |
|
flip close |
MonkeyFlipEvent |
否 |
|
|
trackball dx dy |
否 |
||
|
deferredReturn |
DeferReturnCommand |
否 |
这个命令比较特别,做的事情是等待一个命令完成然后执行另外一个命令。但是在MonkeyRunner框架中并没有支持。 |
|
注: MR代表MonkeyRunner |
|||
表6-3-1 命令字串和对应的命令翻译类参照表
MonkeyCommand中所有的类其实都是内部类,比如网络命令相关的命令翻译类或者是MonkeySourceNetwork的子类,或者是MonkeySourceNetworkVars的子类,不然就是MonkeySourceNetworkViews的子类:

图6-3-2 命令翻译类作为事件源的内部类
一旦事件源获取到字串命令就能很方便的通过COMMAND_MAP调用内部的命令翻译类来把命令翻译出来处理,所以我们也可以认为事件源依赖相应的命令翻译类来做事情:

图6-3-3 事件源依赖命令翻译类
下一小节我们通过一个实例去看事件翻译类是如何把MonkeyRunner发送过来的字串命令翻译出来并转换成事件实例的。
老李推荐:第6章3节《MonkeyRunner源码剖析》Monkey原理分析-事件源-事件源概览-命令翻译类的更多相关文章
- 老李推荐:第14章9节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-遍历控件树查找控件
老李推荐:第14章9节<MonkeyRunner源码剖析> HierarchyViewer实现原理-遍历控件树查找控件 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员 ...
- 老李推荐:第14章5节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-装备ViewServer-查询ViewServer运行状态
老李推荐:第14章5节<MonkeyRunner源码剖析> HierarchyViewer实现原理-装备ViewServer-查询ViewServer运行状态 poptest是国内唯一 ...
- 老李推荐:第14章6节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-装备ViewServer-启动ViewServer
老李推荐:第14章6节<MonkeyRunner源码剖析> HierarchyViewer实现原理-装备ViewServer-启动ViewServer poptest是国内唯一一家培养 ...
- 老李推荐:第14章3节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-HierarchyViewer实例化
老李推荐:第14章3节<MonkeyRunner源码剖析> HierarchyViewer实现原理-HierarchyViewer实例化 poptest是国内唯一一家培养测试开发工程师的培 ...
- 老李推荐: 第14章2节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-HierarchyViewer架构概述
老李推荐: 第14章2节<MonkeyRunner源码剖析> HierarchyViewer实现原理-HierarchyViewer架构概述 HierarchyViewer库的引入让M ...
- 老李推荐:第14章1节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-面向控件编程VS面向坐标编程
老李推荐:第14章1节<MonkeyRunner源码剖析> HierarchyViewer实现原理-面向控件编程VS面向坐标编程 poptest是国内唯一一家培养测试开发工程师的培训机 ...
- 老李推荐:第8章7节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-小结
老李推荐:第8章7节<MonkeyRunner源码剖析>MonkeyRunner启动运行过程-小结 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性 ...
- 老李推荐:第8章5节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-运行测试脚本
老李推荐:第8章5节<MonkeyRunner源码剖析>MonkeyRunner启动运行过程-运行测试脚本 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化 ...
- 老李推荐:第6章8节《MonkeyRunner源码剖析》Monkey原理分析-事件源-事件源概览-小结
老李推荐:第6章8节<MonkeyRunner源码剖析>Monkey原理分析-事件源-事件源概览-小结 本章我们重点围绕处理网络过来的命令的MonkeySourceNetwork这个事 ...
- 老李推荐:第8章1节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-运行环境初始化
老李推荐:第8章1节<MonkeyRunner源码剖析>MonkeyRunner启动运行过程-运行环境初始化 首先大家应该清楚的一点是,MonkeyRunner的运行是牵涉到主机端和目 ...
随机推荐
- JavaScript 基本类型值-Undefined、Null、Boolean
▓▓▓▓▓▓ 大致介绍 ECMAScript中有5中简单的数据类型(也称为基本数据类型):Undefined.Null.Boolean.Number.String. ▓▓▓▓▓▓ Undefined ...
- 【前端】:jQuery上
前言: 今天写一篇jQuery,发现内容太多了,那就分成两篇写吧--写完jQuery基础知识后会再写一些jQuery实例~~ jQuery下载.jQuery是一个兼容多浏览器的javascript库, ...
- 简洁美观的Java博客系统Tale开源了,让每一个有故事的人更好的表达想法
Tale Tale的英文含义为故事,我相信每个坚持写Blog的人都是有故事的:中文你叫它 塌了 也无所谓 . Tale 使用了轻量级mvc框架 Blade 开发,默认主题使用了漂亮的 pinghsu, ...
- IntelliJ IDEA 报错:Error:java: 未结束的字符串文字
构建javaweb项目时,控制台报错: 这个问题是由于编码冲突导致的,在设置中找到File Encodings可以看到 ide采用utf-8编码格式,而项目则是GBK编码方式,由此产生冲突. 解决办法 ...
- iOS runtime的应用实例
一直想弄明白runtime是怎么回事,因为面试的时候这是一道必备问题,但是平时用的机会真的少之又少,我一度以为runtime只是用来装13的利器,没什么卵用.但是随着学习的增多,发现runtime ...
- Java显式锁学习总结之六:Condition源码分析
概述 先来回顾一下java中的等待/通知机制 我们有时会遇到这样的场景:线程A执行到某个点的时候,因为某个条件condition不满足,需要线程A暂停:等到线程B修改了条件condition,使con ...
- [微信小程序-开发工具]快捷键
1.进入快捷键 > > 2.快捷键 1.元素面板 ↑↓:导航元素 →←:展开/折叠 Enter:编辑属性 H:隐藏元素 F2:切换编辑HTML 2.样式窗口 Tab/Shift + T ...
- IOS自定义UIView
IOS中一般会用到几种方式自定义UIView 1.继承之UIView的存代码的自定义View 2.使用xib和代码一起使用的自定义View 3.存xib的自定义View(不需要业务处理的那种) 本文主 ...
- Spring总结_02_Spring概述
一.概念准备 1.应用程序:是能完成我们所需要功能的成品,比如购物网站.OA系统. 2.框架:是能完成一定功能的半成品,比如我们可以使用框架进行购物网站开发:框架做一部分功能,我们自己做一部分功能,这 ...
- 专题:DUILIB Win32 透明效果
Win32 透明效果相关基础知识 Layered Windows 分层窗口.这是Windows2000开始引入的概念,重新定义了窗口的Hit Testing方法,以前都是把窗口按rectangle的方 ...