zoukankan      html  css  js  c++  java
  • 老李推荐:第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发送过来的字串命令翻译出来并转换成事件实例的。

  • 相关阅读:
    【HDOJ6687】Rikka with Stable Marriage(Trie树,贪心)
    【CF1244D】Paint the Tree(树形DP,树)
    【HDOJ6681】Rikka with Cake(扫描线,线段树)
    CPU亲和力
    iostat、vmstat和mpstat命令
    sar命令介绍
    Linux网络调试工具
    svn使用入门
    深入探究C/C++基本数据类型
    core文件与gdb调试
  • 原文地址:https://www.cnblogs.com/poptest/p/5083211.html
Copyright © 2011-2022 走看看