# Imports the monkeyrunner modules used by this program
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice# Connects to the current device, returning a MonkeyDevice object
device = MonkeyRunner.waitForConnection()
# Installs the Android package. Notice that this method returns a boolean, so you can test
# to see if the installation worked.
device.installPackage('myproject/bin/MyApplication.apk')
# sets a variable with the package's internal name
package = 'com.example.android.myapplication'
# sets a variable with the name of an Activity in the package
activity = 'com.example.android.myapplication.MainActivity'
# sets the name of the component to start
runComponent = package + '/' + activity
# Runs the component
device.startActivity(component=runComponent)
# Presses the Menu button
device.press('KEYCODE_MENU', MonkeyDevice.DOWN_AND_UP)
# Takes a screenshot
result = device.takeSnapshot()
# Writes the screenshot to a file
result.writeToFile('myproject/shot1.png','png')
# 代码文件:contacts.py
# 导入要用到的代码库
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice
from com.android.monkeyrunner import MonkeyImagefrom com.android.monkeyrunner.easy import EasyMonkeyDevicefrom com.android.monkeyrunner.easy import HierarchyViewerfrom com.android.monkeyrunner.easy import Byfrom com.android.hierarchyviewerlib.device import ViewNode#初始化 MonkeyDevice,device类型是MonkeyDevice
device = MonkeyRunner.waitForConnection()
#初始化EasyMonkeyDevice,easy_device的类型是EasyMonkeyDevice
#在android 2.3.3中,加入了新的API,即EasyMonkeyDevice
easy_device = EasyMonkeyDevice(device)print 'start Contacts'
# 启动Contacts 应用
# 启动方法使用了adb shell中的am命令,关于am命令的使用,可以在启动adb shell后,键入am回车,里面有
# 该命令的帮助文档
device.shell('am start -a android.intent.action.MAIN -n com.android.contacts/.DialtactsContactsEntryActivity')print 'press menu'
print 'check have any'# shell 命令返回后,休眠两秒,等待contacts应用启动起来
MonkeyRunner.sleep(2)
# 如果联系人为空,就会出现"you don't have any..."的界面,其中显示文字的控件(TextView)的id为"emptyText"
# 这里我们检查一下,这个TextView控件是否可见,这个函数是EasyMonkeyDevice类提供的功能
text = easy_device.visible(By.id('id/emptyText')) #这步操作耗时较长,因为按id查找控件需要时间较长print text #如果可见,将打印出True# 通过MonkeyDevice获取HierarchyViewer对象实例
hierarchy_viewer = device.getHierarchyViewer()
#通过HierarchyViewer获取ViewNode实例(一个viewnode实例代表一个控件)
view_node = hierarchy_viewer.findView(By.id('id/emptyText'))
#获取控件内的文本
text = view_node.namedProperties.get('mText').toString()if text.find('have any') < 0: print 'not find have any!'else: print 'find have any!'print text
# 获取当前屏幕的截图
new_img = device.takeSnapshot()
# 将截图保存到文件
new_img.writeToFile('/home/lstest/test1.png', 'png')# 下面代码实现按菜单进入新建联系人界面
print "menu"
device.press('KEYCODE_MENU', 'DOWN_AND_UP') device.press('KEYCODE_DPAD_UP', 'DOWN_AND_UP')device.press('KEYCODE_DPAD_UP', 'DOWN_AND_UP')device.press('KEYCODE_DPAD_RIGHT', 'DOWN_AND_UP')device.press('KEYCODE_DPAD_RIGHT', 'DOWN_AND_UP')device.press('KEYCODE_DPAD_CENTER', 'DOWN_AND_UP')# 下面代码将光标移入First Name文本输入框
device.press('KEYCODE_DPAD_UP', 'DOWN_AND_UP')
device.press('KEYCODE_DPAD_UP', 'DOWN_AND_UP')device.press('KEYCODE_DPAD_UP', 'DOWN_AND_UP')device.press('KEYCODE_DPAD_UP', 'DOWN_AND_UP')device.press('KEYCODE_DPAD_DOWN', 'DOWN_AND_UP')device.type('ls_01') # 输入联系人姓名 "ls_01"MonkeyRunner.sleep(3)
#下面代码将光标移入Phone文本输入框
device.press('KEYCODE_DPAD_DOWN', 'DOWN_AND_UP')device.press('KEYCODE_DPAD_DOWN', 'DOWN_AND_UP')device.press('KEYCODE_DPAD_RIGHT', 'DOWN_AND_UP')device.type('12345678901') #输入电话号码
easy_device.touch(By.id('id/btn_done'), 'DOWN_AND_UP') #实现点击“Done”按钮功能MonkeyRunner.sleep(5)#获取截图并保存 (截图如下:)
new_img = device.takeSnapshot()
new_img.writeToFile('/home/lstest/test2.png', 'png')#返回Idle界面
device.press('KEYCODE_BACK', 'DOWN_AND_UP')
device.press('KEYCODE_BACK', 'DOWN_AND_UP')#文件结束