Android monkey test 脚本的编写

Android 的 monkey test 工具提供了 -f scriptfile 参数,可以指定 test 脚本,然而翻遍了 Android 的网站也没有找到这个脚本的文档,最终只在 monkey 的源码 MonkeySourceScript.java 中找到了一小段注释,里面给了一个不到 10 行例子:

/**   * monkey event queue. It takes a script to produce events   *    * sample script format:   *      type= raw events   *      count= 10   *      speed= 1.0   *      start data >>   *      captureDispatchPointer(5109520,5109520,0,230.75429,458.1814,0.20784314,   *          0.06666667,0,0.0,0.0,65539,0)   *      captureDispatchKey(5113146,5113146,0,20,0,0,0,0)   *      captureDispatchFlip(true)   *      ...   */  

有了这个例子之后稍微好办了些,至少有搜索的关键词了,于是用 captureDispatchPointer 很快就找到了一篇自动化测试的文章,(以下是引用)

 "DispatchPointer";"DispatchTrackball";"DispatchKey";"DispatchFlip";这几个最主要的函数   按键事件:参见android.view KeyEvent.java   DispatchKey(downTime, //@param: The time (in {@link android.os.SystemClock#uptimeMillis}) at which this key code originally went down.毫秒   eventTime,     //at which this event happened.                      action,        //Action code: either {@link #ACTION_DOWN=0}, {@link #ACTION_UP=1}, or {@link #ACTION_MULTIPLE=2}.   code,    //The key code. 见附录1, 比如KEYCODE_DPAD_DOWN(20)KEYCODE_DPAD_UP(19)   repeat, //A repeat count for down events (> 0 if this is after the initial down) or event count for multiple events.   metaState, //Flags indicating which meta keys are currently pressed.   device, //The device ID that generated the key event.   scancode) //Raw device scan code of the event.      DispatchPointer,DispatchTrackball(downTime, eventTime,                           action, x, y, pressure, size, metaState, xPrecision, yPrecision,                           device, edgeFlags);   @action The kind of action being performed -- one of either{@link #ACTION_DOWN=0}, {@link #ACTION_MOVE=1}, {@link #ACTION_UP=2}, or{@link #ACTION_CANCEL=3}.   @param x The X coordinate of this event.   @param y The Y coordinate of this event.   @param pressure The current pressure of this event.  The pressure generally ranges from 0 (no pressure at all) to 1 (normal pressure), however values higher than 1 may be generated depending on the calibration of the input device.   @param size: A scaled value of the approximate size of the area being pressed touched with the finger. The actual value in pixels corresponding to the finger touch is normalized with a device specific range of values and scaled to a value between 0 and 1.   @param metaState The state of any meta / modifier keys that were in effect when the event was generated.   @param xPrecision The precision of the X coordinate being reported.   @param yPrecision The precision of the Y coordinate being reported.   @param deviceId The id for the device that this event came from.  An id of zero indicates that the event didn't come from a physical device; other numbers are arbitrary and you shouldn't depend on the values.   @param edgeFlags A bitfield indicating which edges, if any, where touched by this MotionEvent   captureDispatchFlip(true)是否打开滑盖,true是打开  

剩下具体每个函数的用法,就只能在源码里面慢慢发掘了。另外搜索到一个例子:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwygzz.html