monkeyrunner 脚本 使用集合让一切井井有条
monkeyrunner 脚本 使用集合让一切井井有条
旧版 工具提供了一个 API,用于编写可从 代码外部控制 设备或模拟器的程序。
工具主要用于在功能/框架级测试应用和设备以及运行单元测试套件,不过您也可以将其用于其他用途。使用 ,您可以编写 程序来安装 应用或测试软件包,运行该应用或软件包,向其发送模拟击键,截取其界面的屏幕截图,并将屏幕截图存储到工作站中。
注意: API 未进行维护。我们建议您改用 UI 测试框架。
工具与 UI/ (即 工具)无关。 工具直接在设备或模拟器上的 adb shell 中运行,并生成伪随机用户和系统事件流。相比之下, 工具通过从 API 发送特定命令和事件来从工作站控制设备和模拟器。
工具为 测试提供了以下功能:
工具使用 ,这是一种使用 Java 编程语言的 实现。 让 API 与 框架可以轻松交互。借助 ,您可以使用 语法访问 API 的常量、类和方法。
一个简单的 程序
下面介绍了一个简单的 程序,该程序会连接到一台设备,并创建一个 对象。该程序使用 对象安装 应用软件包,运行其中一个monkeyrunner 脚本,并向该 发送按键事件。然后,该程序会截取结果的屏幕截图,并创建一个 对象。该程序通过此对象输出包含屏幕截图的 PNG 文件。
# 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 # whether 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')
API
API 包含在 com.. 软件包的三个模块中:
在 程序中monkeyrunner 脚本,您可以将每个类作为 模块来使用。 工具不会自动导入这些模块。要导入模块,请使用 from 语句:
from com.android.monkeyrunner import <module>
其中 是要导入的类名称。您可以在同一个 from 语句中导入多个模块monkeyrunner 脚本 使用集合让一切井井有条,只需用英文逗号分隔各模块名称即可。
运行
您可以通过文件运行 程序,也可以在交互式会话中输入 语句。您可以通过调用 命令(位于 SDK 目录的 tools/ 子目录中)来执行这两项操作。如果您以参数的形式提供文件名, 命令会将文件的内容作为 程序运行;否则,它会启动一个交互式会话。
以下是 命令的语法:
monkeyrunner -plugin
表 1 对其中的 标志和参数进行了说明。
表 1. 标志和参数
参数说明
–
(可选)指定包含 插件的 文件。如需详细了解 插件,请参阅 部分。如需指定多个文件,请多次添加该参数。
如果您提供此参数, 命令会将文件的内容作为 程序运行。否则,该命令会启动交互式会话。
(可选)该程序在
. 中的标志和参数
内置帮助
您可以通过运行以下命令为 生成 API 参考文档:
monkeyrunner help.py
参数如下:
使用插件扩展
您可以使用 Java 编写的类扩展 APImonkeyrunner 脚本 使用集合让一切井井有条,并将其构建为一个或多个 JAR 文件。您可以借助此功能使用自己的类扩展 API,或扩展现有的类。您还可以使用此功能初始化 环境。
如需为 提供插件,请在调用 命令时使用 中所述的 –
参数。
在插件代码中,您可以导入和扩展 com.. 中的 主类 、 和 (请参阅关于 的部分)。
请注意,插件不会授予您对 SDK 的访问权限。您无法导入 com..app 等软件包。这是因为 会与低于框架 API 级别的设备或模拟器交互。
插件启动类
插件的 JAR 文件可以指定在脚本处理开始之前实例化的类。如需指定此类,请将键 unner 添加到 JAR 文件的清单中。该值应采用启动时运行的类的名称。以下代码段展示了如何在 ant 构建脚本中执行此操作:
<jar jarfile="myplugin" basedir="${build.dir}"> <attribute name="MonkeyRunnerStartupRunner" value="com.myapp.myplugin"/>
如需访问 工具的运行时环境,启动类可以实现 mon.base.
。例如monkeyrunner 脚本,此类会在默认命名空间中设置一些变量:
package com.android.example import com.google.common.base.Predicate import org.python.util.PythonInterpreter class Main: Predicate { override fun apply(anInterpreter: PythonInterpreter): Boolean { /* * Examples of creating and initializing variables in the monkeyrunner environment's * namespace. During execution, the monkeyrunner program can refer to the variables * "newtest" and "use_emulator" * */ anInterpreter.set("newtest", "enabled") anInterpreter.set("use_emulator", 1) return true } }
Java
package com.android.example; import com.google.common.base.Predicate; import org.python.util.PythonInterpreter; public class Main implements Predicate { @Override public boolean apply(PythonInterpreter anInterpreter) { /* * Examples of creating and initializing variables in the monkeyrunner environment's * namespace. During execution, the monkeyrunner program can refer to the variables "newtest" * and "use_emulator" * */ anInterpreter.set("newtest", "enabled"); anInterpreter.set("use_emulator", 1); return true; } }
1. 本站所有资源来源于用户上传和网络,如有侵权请联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长处理!
6. 本站不售卖代码,资源标价只是站长收集整理的辛苦费!如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
7. 站长QQ号码 2205675299
资源库 - 资源分享下载网 » monkeyrunner 脚本 使用集合让一切井井有条
常见问题FAQ
- 关于资源售价和售后服务的说明?
- 代码有没有售后服务和技术支持?
- 有没有搭建服务?
- 链接地址失效了怎么办?
- 关于解压密码

