之前的系列给出了Appium,Robotium,Instrumentation和UIAutomator创建一个Note实例的例子:
- 《[Appium创建一个Note的实例](http://blog.csdn.net/zhubaitian/article/details/39502069)》
- 《[Robotium创建一个Note的实例](http://blog.csdn.net/zhubaitian/article/details/39502119)》
- 《[UIAutomator创建一个Note的实例](http://blog.csdn.net/zhubaitian/article/details/39508513)》
- 《[SDK Instrumentation创建一个Note的实例](http://blog.csdn.net/zhubaitian/article/details/39546371)》
那么用MonkeyRunner又是如何实现这些功能的呢?今天花了点时间学习了下MonkeyRunner的基本API然后尝试实现了该功能,给我作为一个初学者的感触如下:
- MonkeyRunner可以通过坐标点击对象,在引入EasyMonkeyDevice后可以根据ID进行点击
- Eclipse上Jython代码很多对象没有成员函数提示(jar包以导入),如MonkeyRunner.waitForConnection获得device对象后,后面devie.不能自动提示可用成员函数
- 感觉脚本跑得很慢
- 没有任何junit的继承,应该可以通过Junit4框架来使用MonkeyRunner,下次有时间再尝试下
- 也许是不熟悉,感觉跟Robotium,UIAutomator等的编写效率差一些
~~~
from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice
from com.android.monkeyrunner.easy import EasyMonkeyDevice,By
#Connect to the target device
device = MonkeyRunner.waitForConnection("10000", "emulator-5554")
easy_device = EasyMonkeyDevice(device) #touch a button by id would need this
device.startActivity(component="com.example.android.notepad/com.example.android.notepad.NotesList")
#time.sleep(2000)
#invoke the menu options
MonkeyRunner.sleep(3)
device.press('KEYCODE_MENU', MonkeyDevice.DOWN_AND_UP);
#Touch on the "Add note" menu entry by coordinate
MonkeyRunner.sleep(3)
device.touch(118,253,MonkeyDevice.DOWN_AND_UP)
#Type in the text for the note
MonkeyRunner.sleep(3)
device.type('Note1')
#easy_device.type(By.id('id/note'),'Note2')
#invoke the menu options
MonkeyRunner.sleep(3)
device.press('KEYCODE_MENU', MonkeyDevice.DOWN_AND_UP);
#Touch on the "save" menu entry by coordinate
MonkeyRunner.sleep(3)
device.touch(59,257,MonkeyDevice.DOWN_AND_UP)
#Simulate long press on the new added note by id with EasyMonkeyDevice
MonkeyRunner.sleep(3)
easy_device.touch(By.id('id/text1'),MonkeyDevice.DOWN) #Touch down for 10 seconds
MonkeyRunner.sleep(10)
easy_device.touch(By.id('id/text1'),MonkeyDevice.UP) #Then release the touch
#Touch on the "delete" menu entry of the context menu options to delete the note
MonkeyRunner.sleep(6)
device.touch(84,172,MonkeyDevice.DOWN_AND_UP)
~~~
- 前言
- MonkeyRunner创建一个Note的实例
- MonkeyRunner在Windows下的Eclipse开发环境搭建步骤(兼解决网上Jython配置出错的问题)
- MonkenRunner通过HierarchyViewer定位控件的方法和建议(Appium/UIAutomator/Robotium姊妹篇)
- MonkeyDevcie API 实践全记录
- MonkeyImage API 实践全记录
- EasyMonkeyDevice vs MonkeyDevice&HierarchyViewer API Mapping Matrix
- adb概览及协议参考
- MonkeyRunner源码分析之-谁动了我的截图?
- MonkeyRunner源码分析之与Android设备通讯方式
- MonkeyRunner源码分析之启动
- Monkey源码分析之运行流程
- Monkey源码分析之事件源
- Monkey源码分析番外篇之WindowManager注入事件如何跳出进程间安全限制
- Monkey源码分析番外篇之Android注入事件的三种方法比较
- Monkey源码分析之事件注入
- monkey源码分析之事件注入方法变化
- MonkeyRunner源码分析之工作原理图
- Android自动化测试框架新书:<<MonnkeyRunner实现原理剖析>>交流