第6章3节《MonkeyRunner源码剖析》Monkey原理分析-事件源-事件源概览-命令翻译类
来源:互联网 发布:ehviewer老是网络错误 编辑:程序博客网 时间:2024/06/05 10:14
每个来自网络的字串命令都需要进行解析执行,只是有些是在解析的过程中直接执行了事,而有些是需要在解析后创建相应的事件类实例并添加到命令队列里面排队执行。负责这部分工作的就是命令翻译类。那么我们往下还是继续在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发送过来的字串命令翻译出来并转换成事件实例的。
注:更多文章请关注公众号:techgogogo或个人博客http://techgogogo.com。当然,也非常欢迎您直接微信(zhubaitian1)勾搭。本文由天地会珠海分舵原创。转载请自觉,是否投诉维权看心情。
- 第6章3节《MonkeyRunner源码剖析》Monkey原理分析-事件源-事件源概览-命令翻译类
- 第6章4节《MonkeyRunner源码剖析》Monkey原理分析-事件源-事件源概览-翻译命令字串
- 第6章1节《MonkeyRunner源码剖析》Monkey原理分析-事件源-事件源概览
- 第6章6节《MonkeyRunner源码剖析》Monkey原理分析-事件源-事件源概览-命令队列
- 第6章2节《MonkeyRunner源码剖析》Monkey原理分析-事件源-事件源概览-获取命令字串
- 第6章5节《MonkeyRunner源码剖析》Monkey原理分析-事件源-事件源概览-事件
- 第6章7节《MonkeyRunner源码剖析》Monkey原理分析-事件源-事件源概览-注入按键事件实例
- 第6章8节《MonkeyRunner源码剖析》Monkey原理分析-事件源-事件源概览-小结
- 第5章6节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 初始化事件源(原创)
- 第5章7节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 循环获取并执行事件 - runMonkeyCycles(原创)
- 第5章2节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 启动流程概览(原创)
- 第5章3节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 启动脚本(原创)
- 第5章1节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 官方简介(原创)
- 第5章4节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 命令行参数解析(原创)
- 第5章5节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 获取系统服务引用(原创)
- 第8章6节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-启动Monkey
- 第4章3节《MonkeyRunner源码剖析》ADB协议及服务: ADB协议概览SYNC.TXT翻译参考(原创)
- 第4章1节《MonkeyRunner源码剖析》ADB协议及服务: ADB协议概览OVERVIEW.TXT翻译参考(原创)
- 项目经验总结
- cocos2d-x着色器基础之类似水纹效果的实现
- Ubuntu安装mips平台交叉编译环境
- swing JTable学习(七)—TableModelListener
- Develop--Training(三)Getting Started--Interacting with Other Apps
- 第6章3节《MonkeyRunner源码剖析》Monkey原理分析-事件源-事件源概览-命令翻译类
- Android 数据库升级解决方案
- /etc/passwd文件详解
- reviewboard svn post-review hook
- Debian下配置LAMP环境
- ubuntu14.04交叉编译ffmpeg出现unable to create an executable file. C compiler test failed.
- 支持向量机算法 SVM
- Activity类的runOnUiThread更新UI
- OOA/OOD/OOP