第四步:启动应用。
代码3-2-4 增加日记-启动应用
#Step 4: Start the NotePad apk and direct to activity com.example.android.notepad.NotesList
device.startActivity(component="com.example.android.notepad/com.example.android.notepad.NotesList")
MonkeyRunner.sleep(3)
在确定目标应用已经在目标设备安装好后,下一步需要做的事情就是去把目标应用打开,并且定位到目标应用的NotesList这个入口Activity里面。就像每个代码都有一个入口main函数,安卓里面的每个应用也都会有一个入口Activity。至于一个Activity是否是入口是通过项目的AndroidManifest.xml指定的,具体示例请看下图来自NotePad项目的AndroidManifest.xml的描述:
图3-2-3 AndroidManifest.xml指定入口Actvity
第五步:进入NoteEditor Activity
代码3-2-5 增加日记-打开NoteEditor Activity
#Step 5: Direct to the NoteEditor activity to add a note
device.press('KEYCODE_MENU', MonkeyDevice.DOWN_AND_UP);
MonkeyRunner.sleep(3) #Wait a bit for the new page to get ready
#Touch on the "Add note" menu entry by coordinate
device.touch(250,750,MonkeyDevice.DOWN_AND_UP)
MonkeyRunner.sleep(3) #Wait a bit for the new page to get ready
当进入到入口Activity NotesList后,下一步需要做的事情就是去打开NoteEditor这个Activity,以便往后添加一个新的日记了。进入到该Activity的方式是先去点击系统菜单按键调出选项菜单,然后触控菜单项”Add note”就会进入到目标Activity了。这里23行的按键方法press的第一个参数代表按键键值,它的写法有多个选择,比如这里的系统菜单键可以写成”KEYCODE_MENU”,也可以写成“MENU”,甚至可以写成真正的键值”82”。今后我们在原理分析的时候都会看到为什么会是这样,这里就先卖个关子。然后我们看到press的第二个参数就是本小节前面描述的案件动作,这里是DOWN_AND_UP,代表一个普通的按下按键然后释放按键动作。打开菜单选项后,就需要模拟触控事件来对其中的”Add note”这个菜单项进行点击了,这里调用的是MonkeyDevice的touch触控方法,前面两个参数代表需要触碰的屏幕的绝对坐标。我们可以通过uiautomator viewer这个工具来找到该坐标值,在上一章中我们已经有过这方面的描述,这里我们就不累述了,大家不清楚怎么做的请返回上一章进行查看。当触碰该菜单项后应用就会打开NoteEditor这个Activity了。
第六步:输入新建日记内容
代码3-2-6 增加日记-输入日记内容
#Step 6: Type in the text for the note
device.type("MyFirstNote")
通过上一章的学习,我们知道进入NoteEditor这个Activity之后,安卓的软键盘就会自动弹出来方便用户输入日记的内容。所以这一步要做的事情就是调用MonkeyDevice.type方法来把参数指定的日记内容,同时也是标题,写入到NoteEditor的日记控件里面,最终效果如下图所示。
图3-2-4 增加日记内容
第七步:保存新增加日记
代码3-2-7 增加日记-保存日记
#Step7: Save the note by touch on the "save" menu entry by coordinate
device.press('KEYCODE_MENU', MonkeyDevice.DOWN_AND_UP);
MonkeyRunner.sleep(3) #Wait a bit for the new page to get ready
device.touch(200,750,MonkeyDevice.DOWN_AND_UP)
保存日记的流程跟前面打开NoteEditor的流程是一样的,都是先用press方法模拟点击系统菜单按键,然后使用touch触控方法触碰菜单选项的“save”选项来保存新增日记。