老李推荐: 第3章2节《MonkeyRunner源码剖析》脚本编写示例: MonkeyDevice API使用示例
上一节我们学习了如何通过MonkeyRunner这个类的静态方法waitForConnection来把后台和设备建立好连接,且看到了在建立连接成功后,该方法会返回来一个MonkeyDevice的实例对象。那么这一节我们就通过编写一些脚本代码示例来了解学习下MonkeyDevice这个类的使用方法。
MonkeyDevice这个类,从类名我们就可以知道它所做的事情基本上都是跟目标安卓设备这个device相关的,事实上也是如此,比如上一节的示例中就是通过Device对象的getSystemProperty方法来获得系统环境变量中保存的目标设备的序列号的。
当然,除了getSystemProperty这个方法之外,MonkeyDevice还提供了很多设备相关的操作方法,且这些方法很大一部分我们在编写测试脚本的时候都会经常使用。下面我们就把我们常用的且本节会用到的关键方法的使用描述给列出来供大家参考:
表3-2-1 示例代码所用关键方法列表
从上表我们可以看到在调用MonkeyDevice的press按键方法和touch触控方法时需要指定一个动作类型的参数。根据不同的动作类型可以控制向目标设备发送不同类型的事件,且这些动作在MonkeyDevice都有对应的定义:
- DOWN: 通过press或者touch方法往设备发送一个按下事件,模拟的是用户按下一个按键或者在触摸屏触控按下手指的动作
- UP: 通过press或者touch方法往设备发送一个释放事件,模拟的是用户在按下一个按键后放手释放该按键或者用户在屏幕上按下手指然后释放手指的动作
- DOWN_AND_UP: 通过press或者touch方法往设备发送一个按下DOWN事件,然后紧跟着立刻发送一个释放UP事件,模拟的是用户按下一个按键后立刻释放手指和用户触控屏幕后立刻释放手指的动作
- MOVE:往目标安卓设备发送一个移动的触控事件,该事件通常会和DOWN以及UP组合使用来模拟一个拖动Drag的手势动作。注意这个动作只对MonkeyDevice的触控方法touch起效,因为按键只有模拟触摸屏幕的触控动作能做拖动的动作,按键是没有办法做拖动动作的
那么下面我们就通过两个示例来看一下在monkeyrunner脚本中我们应该如何调用这些方法来做事情。同时这里需要重申一点的是,这些示例代码都是为了没有接触过monkeyrunner脚本编写的读者准备的,为了方便描述,这些代码都没有封装成任何方法。
我们首先来看第一个示例,该示例的作用是在NotePad应用中创建一个日记,然后把它删除,整个过程会涉及我们上面提及的大部分方法的调用。