MonkeyRunner介绍

sidyang 贡献于2017-09-11

作者 jane  创建于2014-05-11 12:41:00   修改者USER-  修改于2014-05-25 10:06:00字数17822

文档摘要:MonkeyRunner工具提供了一个API,使用此API写出的程序可以在Android代码之外控制Android设备和模拟器。通过monkeyrunner,您可以写出一个Python程序去安装一个Android应用程序或测试包,运行它,向它发送模拟击键,截取它的用户界面图片,并将截图存储于工作站上。
关键词:

MonkeyRunner 目录 MonkeyRunner 1 一、什么是monkeyrunner 2 二、monkeyrunner工具同Monkey工具的差别 2 三、monkeyrunner的测试类型 2 四、运行monkeyrunner 2 五、monkerunner脚本基本方式 3 六、实例 3 1、关于录制和回放,获取坐标点 3 1. 将以下代码拷贝到monkey_recorder.py 3 2. 将以下代码拷贝到monkey_playback.py 4 3. 获取坐标点、脚本 6 2、MonkeyRunner执行Python脚本实例——发送短信 7 3、monkeyrunner测试apk包安装卸载 8 4、使用控件ID写脚本 9 1.安卓自有目录\tools\hierarchyviewer.bat工具可以用来查看应用程序的ID。 9 2. 通过EasyMonkeyDevice类和By类来调用控件ID。 9 3. 运行文件模拟计算7*8=56,生成result.png。 10 5、自己写的例子 11 七、附录 12 1、Monkeyrunner API帮助文档 12 2、使用Eclipse编译MonkeyRunner脚本方法 20 1. 安装Python插件及配置 20 2. 配置Python插件 21 3. 新建Python项目 27 3、使用java调用MonkeyRunner 30 一、什么是monkeyrunner monkeyrunner工具提供了一个API,使用此API写出的程序可以在Android代码之外控制Android设备和模拟器。通过monkeyrunner,您可以写出一个Python程序去安装一个Android应用程序或测试包,运行它,向它发送模拟击键,截取它的用户界面图片,并将截图存储于工作站上。monkeyrunner工具的主要设计目的是用于测试功能/框架水平上的应用程序和设备,或用于运行单元测试套件,但您当然也可以将其用于其它目的。 使用monkeyrunner前,需要安装和配置JDK、SDK和Python。 二、monkeyrunner工具同Monkey工具的差别 Monkey: Monkey工具直接运行在设备或模拟器的adb shell中,生成用户或系统的伪随机事件流。 monkeyrunner: monkeyrunner工具则是在工作站上通过API定义的特定命令和事件控制设备或模拟器。 Monkeyrunner缺点: 1、 monkeyrunner本身存在bug,长时间跑,自身也会出现crash 2、 monkeyrunner无论导入什么库,都是app层的,黑盒测试,相当于android ui layout上又架了一层,模拟点击操作 三、monkeyrunner的测试类型 1、多设备控制:monkeyrunner API可以跨多个设备或模拟器实施测试套件。您可以在同一时间接上所有的设备或一次启动全部模拟器(或统统一起),依据程序依次连接到每一个,然后运行一个或多个测试。您也可以用程序启动一个配置好的模拟器,运行一个或多个测试,然后关闭模拟器。 2、 功能测试: monkeyrunner可以为一个应用自动贯彻一次功能测试。您提供按键或触摸事件的输入数值,然后观察输出结果的截屏。 3、 回归测试:monkeyrunner可以运行某个应用,并将其结果截屏与既定已知正确的结果截屏相比较,以此测试应用的稳定性。 4、 可扩展的自动化:由于monkeyrunner是一个API工具包,您可以基于Python模块和程序开发一整套系统,以此来控制Android设备。除了使用monkeyrunner API之外,您还可以使用标准的Python os和subprocess模块来调用Android Debug Bridge这样的Android工具。 四、运行monkeyrunner 您可以直接使用一个代码文件运行monkeyrunner,抑或在交互式对话中输入monkeyrunner语句。不论使用哪种方式,您都需要调用SDK目录的tools子目录下的monkeyrunner命令。如果您提供一个文件名作为运行参数,则monkeyrunner将视文件内容为Python程序,并加以运行;否则,它将提供一个交互对话环境。 monkeyrunner的命令语法为: monkeyrunner -plugin -plugin 为 monkeyrunner 指定一个包含插件的.jar 文件。学习更多内容见 Extending monkeyrunner with plugins.指定多个插件,请多次输入参数。 如果您提供这个参数,monkeyrunner 命令 按 Python 程序的方式运行文件的内容;否则,它开启一个会话窗口。 <程序选项> 中程序的标志和参数 五、monkerunner脚本基本方式 # 导入此程序所需的monkeyrunner模块 from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice # 连接当前设备,返回一个MonkeyDevice对象 device = MonkeyRunner.waitForConnection() # 安装Android包,注意,此方法返回的返回值为boolean,由此您可以判断安装过程是否正常 device.installPackage('myproject/bin/MyApplication.apk') # 运行此应用中的一个活动 device.startActivity(component='com.example.android.myapplication.MainActivity') # 按下菜单按键 device.press('KEYCODE_MENU','DOWN_AND_UP') # 截取屏幕截图 result = device.takeSnapShot # 将截图保存至文件 result.writeToFile('myproject/shot1.png','png') 六、实例 1、关于录制和回放,获取坐标点 1. 将以下代码拷贝到monkey_recorder.py #!/usr/bin/env monkeyrunner # Copyright 2010, The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from com.android.monkeyrunner import MonkeyRunner as mr from com.android.monkeyrunner.recorder import MonkeyRecorder as recorder device = mr.waitForConnection() recorder.start(device) 2. 将以下代码拷贝到monkey_playback.py #!/usr/bin/env monkeyrunner # Copyright 2010, The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import sys from com.android.monkeyrunner import MonkeyRunner # The format of the file we are parsing is very carfeully constructed. # Each line corresponds to a single command. The line is split into 2 # parts with a | character. Text to the left of the pipe denotes # which command to run. The text to the right of the pipe is a python # dictionary (it can be evaled into existence) that specifies the # arguments for the command. In most cases, this directly maps to the # keyword argument dictionary that could be passed to the underlying # command. # Lookup table to map command strings to functions that implement that # command. CMD_MAP = { 'TOUCH': lambda dev, arg: dev.touch(**arg), 'DRAG': lambda dev, arg: dev.drag(**arg), 'PRESS': lambda dev, arg: dev.press(**arg), 'TYPE': lambda dev, arg: dev.type(**arg), 'WAIT': lambda dev, arg: MonkeyRunner.sleep(**arg) } # Process a single file for the specified device. def process_file(fp, device): for line in fp: (cmd, rest) = line.split('|') try: # Parse the pydict rest = eval(rest) except: print 'unable to parse options' continue if cmd not in CMD_MAP: print 'unknown command: ' + cmd continue CMD_MAP[cmd](device, rest) def main(): file = sys.argv[1] fp = open(file, 'r') device = MonkeyRunner.waitForConnection() process_file(fp, device) fp.close(); if __name__ == '__main__': main() 3. 获取坐标点、脚本 (1)打开monkey_recorder.py (2)录制操作 3、回放操作 2、MonkeyRunner执行Python脚本实例——发送短信 目标:对手机短信程序进行压力测试。 #导入我们需要用到的包和类并且起别名 import sys from com.android.monkeyrunner import MonkeyRunner as mr from com.android.monkeyrunner import MonkeyDevice as md from com.android.monkeyrunner import MonkeyImage as mi #connect device 连接设备 #第一个参数为等待连接设备时间 #第二个参数为具体连接的设备ID device = mr.waitForConnection(1.0,‘device_id’) if not device: print >> sys.stderr,"fail" sys.exit(1) #定义要启动的Activity componentName='com.android.mms/.ui.BootActivity' #启动特定的Activity device.startActivity(component = componentName) #等待时间,防止操作太快,设备反应不及时 mr.sleep(1.0) #do someting 进行我们的操作 #新建短信 #参数是屏幕上坐标值,最后一个参数是动作 device.touch(57,747,'DOWN_AND_UP') mr.sleep(1.0) #输入收件人号码 device.type('10086') #发送短信条数 for i in range(0,10): #输入短信内容 device.touch(187,402,'DOWN_AND_UP') device.type('Hello') mr.sleep(1.0) #发送短信 device.touch(432,380,'DOWN_AND_UP') mr.sleep(1.0) device.touch(51,752,'DOWN_AND_UP') mr.sleep(1.0) #takeSnapshot截图 mr.sleep(1.0) result = device.takeSnapshot() #save to file 保存到文件,D盘的根目录下 result.writeToFile('d:\\result2.png','png'); 3、monkeyrunner测试apk包安装卸载 from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice device = MonkeyRunner.waitForConnection() #install package NotesList.apk #可以通过创建samples project 然后运行安装NotesList.apk到手机设备上 #device.installPackage('./installPackage/NotesList.apk') device.installPackage('NotesList.apk') print ('install success') #remove package NotesList.apk device.removePackage ('com.example.android.notepad') print ('removed success') MonkeyRunner.sleep(15) 4、使用控件ID写脚本 1.安卓自有目录\tools\hierarchyviewer.bat工具可以用来查看应用程序的ID。 操作hierarchyviewer.bat工具步骤: (1) 启动安卓模拟器,打开需要查看ID的软件界面。此处以google搜索界面为例。然后双击打开hierarchyviewer.bat,显示搜索界面的activity,即下图左侧被选中的项,表示搜索界面的完整包名。 在属性显示区域可以看到各个控件所处的坐标位置,以及可以查看模拟器上任务栏的高度,这些信息可以用于坐标计算中。 (2)hierarchyviewer介绍 HierarchyViewer是Android SDK包中一个非常好用的工具,你在 android-sdks/tools目录下可以找到它。通过HierarchyViewer,即使没有应用的源代码,我们也可以非常直观地浏览Activity中控件的层次结构图,以及每个控件的属性和截图,这对于测试人员编写自动化测试用例是极有帮助的。 2. 通过EasyMonkeyDevice类和By类来调用控件ID。 一些常用控件的写法如下: (1) 输入框的ID写法: easy_device.type(By.id('id/name_text),'zhangsan') (2) 复选框/单选/按钮的ID写法: easy_device.touch(By.id('id/login_button'),MonkeyDevice.DOWN_AND_UP) (3) 当两个ID名称相同时,可以使用层级进行定位 easy_device.touch(By.id('id/parent_button'),MonkeyDevice.DOWN_AND_UP,By.id('id/current_button'),MonkeyDevice.DOWN_AND_UP) 通过ID进行计算器操作示例calculator.py: from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice from com.android.monkeyrunner.easy import EasyMonkeyDevice from com.android.monkeyrunner.easy import By from com.android.chimpchat.hierarchyviewer import HierarchyViewer from com.android.hierarchyviewerlib.models import ViewNode device = MonkeyRunner.waitForConnection() package = 'com.android.calculator2' activity = 'com.android.calculator2.Calculator' runComponent = package + '/' + activity device.startActivity(component=runComponent) MonkeyRunner.sleep(3.0) easy_device = EasyMonkeyDevice(device) #init easymonkeydevice object must start activity at first.Because the init method easy_device.touch(By.id('id/digit7'),MonkeyDevice.DOWN_AND_UP) MonkeyRunner.sleep(1.0) easy_device.touch(By.id('id/mul'),MonkeyDevice.DOWN_AND_UP) MonkeyRunner.sleep(1.0) easy_device.touch(By.id('id/digit8'),MonkeyDevice.DOWN_AND_UP) MonkeyRunner.sleep(1.0) easy_device.touch(By.id('id/equal'),MonkeyDevice.DOWN_AND_UP) MonkeyRunner.sleep(1.0) pic = device.takeSnapshot() pic.writeToFile('D:\\result.png','png') print 'test finished!' 3. 运行文件模拟计算7*8=56,生成result.png。 monkeyrunner d:\script\calculator.py 5、自己写的例子 目标:拍摄5分钟的视频中间每隔5秒截一次屏 from com.android.monkeyrunner import MonkeyRunner from com.android.monkeyrunner import MonkeyDevice from com.android.monkeyrunner.easy import EasyMonkeyDevice from com.android.monkeyrunner.easy import By from com.android.chimpchat.hierarchyviewer import HierarchyViewer from com.android.hierarchyviewerlib.models import ViewNode import time device = MonkeyRunner.waitForConnection() package = 'com.android.camera' activity = 'com.android.camera.VideoCamera' runComponent = package + '/' + activity device.startActivity(component = runComponent) MonkeyRunner.sleep(3.0) easy_Device = EasyMonkeyDevice(device) easy_Device.touch(By.id('id/shutter_button'),MonkeyDevice.DOWN_AND_UP) MonkeyRunner.sleep(3.0) i = 0 system_time1 = time.time() #控制时间在5分钟之内 while(time.time() - system_time1 < 300): #点击摄像机屏幕上坐标点(100,500)进行截屏 device.touch(100,500,'DOWN_AND_UP') MonkeyRunner.sleep(5.0) i = i + 1 print 'get photo' + str(i) MonkeyRunner.sleep(3.0) easy_Device.touch(By.id('id/shutter_button'),MonkeyDevice.DOWN_AND_UP) MonkeyRunner.sleep(5.0) print "finish" 七、附录 1、Monkeyrunner API帮助文档 1、com.android.monkeyrunner.MonkeyRunner.alert 当前脚本的运行过程中显示警告对话框。对话框是模态,因此脚本停止,直到用户关闭对话框。 参数: 消息 - 消息显示在对话框。 标题 - 对话框的标题。默认值是“提醒”。 okTitle - 使用对话框中的按钮的文本。默认值是“OK”。 返回:返回任何内容。 2、com.android.monkeyrunner.MonkeyDevice.broadcastIntent 发送一个广播设备的意图。 参数: URI - 意图的URI。 行动 - 该行动的意图。 数据 - 数据的URI意图 的mimetype - mime类型的意图。 类别 - 迭代的意图类别名称。 演员 - 一个额外的字典添加到意图。这些额外的类型推断的值的Python类型。 组件 - 组件的意图。 标志 - 一个迭代的标志为Intent.All参数是可选的。每个参数的默认值是null。(见android.content.Context.sendBroadcast(意向)) 返回:返回任何内容。 3、com.android.monkeyrunner.MonkeyRunner.choice 显示一个选择对话框,允许用户选择从一个单一的项目,一个项目清单。 参数: 消息 - 提示信息显示在对话框。 选择 - 一个可迭代的Python类型的选择列表显示 标题 - 对话框的标题。默认的是“输入” 返回:所选项目的抵消了Iterable基于0的数字。 4、com.android.monkeyrunner.MonkeyImage.convertToBytes 转换成一个特定格式的MonkeyImage作为一个字符串返回结果。使用此获得rawpixels在一个特定的格式。字符串输出是有更好的表现。 参数: 格式 - 目标格式(例如,“PNG便携式网络图形格式)。默认为PNG。 返回:一个String生成的图像。 5、com.android.monkeyrunner.MonkeyDevice.drag 模拟设备屏幕上拖动(触摸,持有和移动)。 参数: 开始 - 拖动起点(以像素为单位元组(X,Y)) 结束 - 阻力终点(以像素为单位元组(X,Y) 时间 - 在几秒钟内拖时间(默认为1.0秒) 步骤 - 插值点时要采取的步骤。 (默认是10) 返回:返回任何内容。 6、com.android.monkeyrunner.MonkeyView.getAccessibilityIds 返回当前视图的辅助IDS 返回:视图的辅助IDS作为一个整数列表 7、com.android.monkeyrunner.MonkeyRect.getCenter 返回一个两个项目清单,其中包含矩形的中心的x和y的值 返回:该中心作为一个整数的两个项目清单坐标 8、com.android.monkeyrunner.MonkeyView.getChecked 获取视图的选中状态 返回:一个布尔值,该项目是否被选中或不 9、com.android.monkeyrunner.MonkeyView.getChildren 返回当前视图的孩子们 返回:认为儿童MonkeyView对象名单 10、com.android.monkeyrunner.MonkeyView.getEnabled 返回启用状态的看法。 返回:作为一个布尔启用状态 11、com.android.monkeyrunner.MonkeyView.getFocused 视图返回集中状态 返回:集中的状态作为一个布尔 12、com.android.monkeyrunner.MonkeyRect.getHeight 返回矩形的高度。 返回:作为一个整数的矩形的高度 13、com.android.monkeyrunner.MonkeyDevice.getHierarchyViewer 获取设备HierarchyViewer对象。 返回一个HierarchyViewer对象 14、com.android.monkeyrunner.MonkeyView.getLocation 返回视图的位置在一个MonkeyRect形式 返回:视图作为MonkeyRect对象的位置 15、com.android.monkeyrunner.MonkeyView.getParent 返回当前视图的父 返回:视图的父作为MonkeyView对象 16、com.android.monkeyrunner.MonkeyDevice.getProperty 由于设备上的变量的名称,返回变量的值 参数: 关键 - 变量的名称。可用的名称在http://developer.android.com/guide/topics/testing/monkeyrunner.html上市。 返回:该变量的值 17、com.android.monkeyrunner.MonkeyDevice.getPropertyList 检索,可以查询的属性 返回:返回任何内容。 18、com.android.monkeyrunner.MonkeyImage.getRawPixel 一个单一的ARGB(alpha,红色,绿色,蓝色)像素位置的X,Y。参数X和Y是0,表示在像素尺寸。 X增加的权利,对底部的Y增加。此方法返回一个tuple。 参数: X - x偏移的像素 Y - 像素的y偏移量 返回的元组(一R,G,B)的像素。 tuple中的每个项目都有0-255范围内。 19、com.android.monkeyrunner.MonkeyImage.getRawPixelInt 一个单一的ARGB(alpha,红色,绿色,蓝色)像素位置的X,Y。参数X和Y是0,表示在像素尺寸。 X增加的权利,对底部的Y增加。此方法返回一个整数。 参数: X - x偏移的像素 Y - 像素的y偏移量 返回:X,Y的无符号整数像素。高阶8位是A,followedby 8位为R,G和8 8为B 20、com.android.monkeyrunner.MonkeyDevice.getRootView 获取当前根视图 返回:根视图对象 21、com.android.monkeyrunner.MonkeyView.getSelected 返回视图的选中状态 返回:作为一个布尔选中状态 22、com.android.monkeyrunner.MonkeyImage.getSubImage 复制图像的矩形区域。 参数: 矩形 - 一个元组(X,Y,W,H),说明该地区复制。 x和y指定上左边角落的区域。 w是该地区的像素宽度,h是它的高度。 返回:MonkeyImage对象代表复制的区域。 23、com.android.monkeyrunner.MonkeyDevice.getSystemProperty 代名词的getProperty() 参数: 关键 - 系统变量的名称。 返回:该变量的值。 24、com.android.monkeyrunner.MonkeyView.getText 返回视图所载文本 返回:在视图中的文本 25、com.android.monkeyrunner.MonkeyDevice.getViewByAccessibilityIds 获得指定的无障碍标识的看法。 参数: windowId - 视图来检索窗口的ID。 无障碍标识 - 辅助视图来检索标识。 返回:具有指定ID的视图对象。 26、com.android.monkeyrunner.MonkeyDevice.getViewById 取得具有指定id的观点。 参数: ID - ID的视图来检索。 返回:具有指定ID的视图对象。 27、com.android.monkeyrunner.MonkeyView.getViewClass 返回视图类的名称。 返回:类名作为一个字符串的看法 28、com.android.monkeyrunner.MonkeyDevice.getViewIdList 检索当前应用程序的视图ID 返回:返回任何内容。 29、com.android.monkeyrunner.MonkeyDevice.getViewsByText 获得一个列表包含指定文本的意见。 参数: 文本 - 文本搜索 返回:包含指定文本的视图对象的名单。 30、com.android.monkeyrunner.MonkeyRect.getWidth 返回矩形的宽度。 返回:作为一个整数的矩形的宽度 31、com.android.monkeyrunner.MonkeyRunner.help 格式和API参考显示为MonkeyRunner的。 参数: 格式 - 输出所需的格式,无论是“文本”为纯文本或HTML标记的HTML“。 返回:一个字符串,其中包含所需格式的帮助文本。 32、com.android.monkeyrunner.MonkeyRunner.input 显示一个对话框,接受输入。对话框,模态,因此脚本停止,直到用户点击两个对话框按钮之一。输入一个值,用户输入的值,并单击“确定”按钮。要退出,而无需输入一个值对话框,用户点击“取消”按钮。使用这种方法提供的参数来定制这些按钮的文本。 参数: 消息 - 提示信息显示在对话框。 初值 - 提供给用户的初始值。默认是一个空字符串) 标题 - 对话框的标题。默认的是“输入” okTitle - 文本中使用对话框的确认按钮。默认的是“OK”。文本中使用对话框的“取消”按钮。默认是“取消”。 cancelTitle - 返回:测试用户,或没有输入,如果用户取消了输入; 33、com.android.monkeyrunner.MonkeyDevice.installPackage 设备安装到指定的Android包(。apk文件)。如果设备上已经存在的包,它会被替换。 参数: 路径 - 包的主机上的文件系统路径和文件名。 返回:如果安装成功 34、com.android.monkeyrunner.MonkeyDevice.instrument 与仪器仪表运行指定的包,并返回它产生的输出。使用此运行测试包使用InstrumentationTestRunner。 参数: 的className - 类运行仪表。格式是软件包名/类名。使用软件包名来指定运行,Android包和类名来指定运行该包内的类。对于测试包,这是通常35、testpackagename / InstrumentationTestRunner 参数 - 包含参数传递给这个仪器(默认值是“无”)的对象映射到一个字符串。 返回:一个字符串映射到从包中输出的对象。对于一个测试包,包含一个单一的键 - 值对:关键是'流'的值是一个字符串,其中包含测试输出。 35、com.android.monkeyrunner.MonkeyRunner.loadImageFromFile 加载文件MonkeyImage。 参数: 路径 - 要加载的文件的路径。该文件的路径是在计算机上运行MonkeyRunner,而不是在Android设备上的路径。 返回值:一个的新MonkeyImage代表指定的文件 36、com.android.monkeyrunner.MonkeyDevice.press 发送到指定键的一个关键事件 参数: 名称 - 键的键码按(见android.view.KeyEvent) 如由TouchPressType()返回的类型 - 触摸事件类型。为了模拟输入键,发送DOWN_AND_UP 返回:返回任何内容。 37、com.android.monkeyrunner.MonkeyDevice.reboot 重新引导到指定的引导程序指定的设备。 参数: - 重启进入引导程序:引导程序,恢复,或没有 返回:返回任何内容。 38、com.android.monkeyrunner.MonkeyDevice.removePackage 从设备中删除指定的软件包,包括其相关的数据和高速缓存。 参数: 包 - 包的名字删除。 返回:True如果删除成功 39、com.android.monkeyrunner.MonkeyImage.sameAs 比较这MonkeyImage的对象aother MonkeyImage对象。 参数: 其他 - 其他MonkeyImage的对象。 % - 一个在0.0到1.0的范围内浮动,说明需要是相同的方法,返回“真”的像素的百分比。默认为1.0。 返回:布尔'真',如果两个对象包含相同的图像。 40、com.android.monkeyrunner.MonkeyView.setFocused 设置视图的集中状态 参数: 重点 - 布尔值设置集中到 返回:返回任何内容。 41、com.android.monkeyrunner.MonkeyView.setSelected 设置视图的选定状态 参数: 选择 - 布尔值设置选择 返回:返回任何内容。 42、com.android.monkeyrunner.MonkeyDevice.shell 执行一个adb shell命令,并返回结果,如果有的话。 参数: CMD - adb shell命令来执行。 返回:从命令的输出。 43、com.android.monkeyrunner.MonkeyRunner.sleep 暂停目前正在运行的程序指定的秒数。 参数: 秒 - 暂停的秒数。 返回:返回任何内容。 44、com.android.monkeyrunner.MonkeyDevice.startActivity 开始从指定的参数构造一个Intent发送设备上的活动。 参数: URI - 意图的URI。 行动 - 该行动的意图。 数据 - 数据的URI意图 的mimetype - mime类型的意图。 类别 - 一个Python迭代包含的意图类别名称。 演员 - 一个额外的字典添加到意图。这些额外的类型推断的值的Python类型。 组件 - 组件的意图。 标志 - 一个迭代的标志为Intent.All参数是可选的。为每个参数的默认值是null。(见android.content.Intent) 返回:返回任何内容。 45、com.android.monkeyrunner.MonkeyDevice.takeSnapshot 获取设备的屏幕缓冲区,产生了整个显示器的屏幕捕获。 返回:一个MonkeyImage对象(点阵图包装) 46、com.android.monkeyrunner.MonkeyDevice.touch 在指定位置发送触摸事件 参数: X - X坐标,以像素为单位 Y - Y坐标,以像素为单位 类型 - 触摸事件类型TouchPressType(返回) 返回:返回任何内容。 47、com.android.monkeyrunner.MonkeyDevice.type 键盘上的类型指定的字符串。这相当于要求每个字符串中的字符按(键码,DOWN_AND_UP)。 参数: 消息 - 字符串发送到键盘。 返回:返回任何内容。 48、com.android.monkeyrunner.MonkeyRunner.waitForConnection 等待工作站连接到设备。 参数: 超时 - 在几秒钟等待超时。默认是无限期地等待。 的deviceid - 一个正则表达式指定的设备名称。看到开发指南,了解有关设备名称为“亚行”的文件。 返回:一个ChimpDevice对象代表连接的设备。 49、com.android.monkeyrunner.MonkeyDevice.wake 在设备屏幕上唤醒 返回:返回任何内容。 50、com.android.monkeyrunner.MonkeyImage.writeToFile 写文件MonkeyImage。如果没有指定格式,这种方法猜测输出格式的基础上提供的文件扩展名的扩展。如果是无法猜测的格式,它使用的PNG。 参数: 路径 - 输出文件名,也可以包括其路径 格式 - 目标格式(例如,“PNG便携式网络图形格式。 返回:Boolean如果写成功。 2、使用Eclipse编译MonkeyRunner脚本方法 声明: a. 该方法无法使用Run As Jython,只能在cmd里面运行monkeyrunner调用运行 b. 网上使用python编译monkeyrunner脚本的方法还没有实验 1. 安装Python插件及配置 (1)eclipse安装Python插件  Eclipse环境,点击help->Install New Software, 在弹出界面中选择add按钮:Name随便起, Location: http://pydev.org/updates, 等会之后,选择PyDev下的PyDev for Eclipse,别的都不要选,否则依赖检查那关过不去。 一直点“下一步”,遇到弹出询问你是否信任各种东东时,选择信任。安成后重启Eclipse. 2. 配置Python插件 在Window菜单中选Preferences,  (1) PyDev->Interpreter - Python,New一个Python解释器,填上解释器名字和路径,路径选相         应的python.exe。  (2) 配置Jython插件 在配置Jython插件前,先将安装的SDK目录下\tools\lib\jython-standalone-2.5.3.jar解压到当前目录(\tools\lib\),然后进行一下插件配置 在截图选项1中,点击New, 点击Brower,转到\SDK安装目录\tools\lib\jython-standalone-2.5.3.jar所在目录,选择jython-standalone-2.5.3.jar后,点击打开 Interpreter Name可以修改成你喜欢的名字 接一下就是参照截图中的2步骤 点击New Jar/Zip(s) 转到SDK安装目录\tools\lib,将Hierarchyview2.jar、ierarchyviewerlib.jar、monkeyrunner.jar导入到Libraries中,如图 3. 新建Python项目 点击File>New>Other>PyDev Project. 按照下面的截图中的步骤进行选择后,点击Finish(注意2和3的选择) 点击Finish后,仙剑文件夹Folder 右击hello>New>Pydev Module. 举例代码如下: # Imports the monkeyrunner modules used by this program from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice, MonkeyImage # 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('./ApiDemos.apk') # Runs the component device.startActivity(component='com.example.android.apis/.ApiDemos') # Presses the Menu button device.press('KEYCODE_MENU','DOWN_AND_UP') # Takes a screenshot result = device.takeSnapshot() # Writes the screenshot to a file result.writeToFile('./shot1.png','png') 3、使用java调用MonkeyRunner 1.新建java project 右击工程>properties,选择libraries 点击Add External JARs… Add ddmlib.jar,guavalib.jar,monkeyrunner.jar,sdklib.jar,chimpchat.jar,这五个包 之后在java文件里写入代码: //调用MonkeyRecorder package com.example; import com.android.chimpchat.adb.AdbBackend; import com.android.chimpchat.core.IChimpDevice; import com.android.monkeyrunner.recorder.MonkeyRecorderFrame; public class MyTest { static IChimpDevice device; public static void main(String[] args) { device = new AdbBackend().waitForConnection(); if (device != null){ //在设备能找到的情况下,调用MonkeyRecorderFrame MonkeyRecorderFrame frame = new MonkeyRecorderFrame(device); frame.setVisible(true); } } } 点击Run As Java Application

下载文档到电脑,查找使用更方便

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享文档获得金币 ] 0 人已下载

下载文档