- android
- android.accessibilityservice
- android.accounts
- android.content
- android.database.sqlite
- android.graphics
- android.location
- android.media
- android.net
- android.os
- android.text
- android.view
- android.view.inputmethod
- android.widget
- AbsListView
- AbsoluteLayout
- AbsSeekBar
- AbsSpinner
- AdapterView
- AnalogClock
- BaseAdapter
- BaseExpandableListAdapter
- Button
- CheckBox
- CheckedTextView
- Checkable
- Chronometer
- CompoundButton
- CursorAdapter
- CursorTreeAdapter
- DatePicker
- DialerFilter
- DigitalClock
- EditText
- Filter
- Filter.FilterListener
- Filter.FilterResults
- ExpandableListAdapter
- Filterable
- Gallery
- Gallery.LayoutParams
- GridView
- GridLayout
- RadioGroup
- ImageView
- HorizontalScrollView
- ImageButton
- ImageSwitcher
- FilterQueryProvider
- ListAdapter
- ListView
- MediaController
- QuickContactBadge
- RadioButton
- RatingBar
- RelativeLayout
- RemoteViews
- ResourceCursorAdapter
- ResourceCursorTreeAdapter
- Scroller
- ScrollView
- SearchView
- SeekBar
- SeekBar.OnSeekBarChangeListener
- SimpleAdapter
- SimpleCursorAdapter
- SimpleCursorTreeAdapter
- SimpleExpandableListAdapter
- SlidingDrawer
- Spinner
- SpinnerAdapter
- WrapperListAdapter
- TabHost
- TabHost.TabSpec
- TextView
- TimePicker
- Toast
- TableLayout
- TableRow
- TableRow.LayoutParams
- TabWidget
- TextSwitcher
- ToggleButton
- TwoLineListItem
- VideoView
- ViewAnimator
- ViewFlipper
- ViewSwitcher
- ZoomButtonsController
- ZoomButton
- ZoomControls
- dalvik.system
monkeyrunner
版本:Android 2.3 r1
原文
http://developer.android.com/guide/developing/tools/monkeyrunner_concepts.html
monkeyrunner 工具提供了一个 API,使用此 API 写出的程序可以在 Android 代码之外控制 Android 设备和模拟器。通过 monkeyrunner,您可以写出一个 Python 程序去安装一个 Android 应用程序或测试包,运行它,向它发送模拟击键,截取它的用户界面图片,并将截图存储于工作站上。monkeyrunner 工具的主要设计目的是用于测试功能/框架水平上的应用程序和设备,或用于运行单元测试套件,但您当然也可以将其用于其它目的。
monkeyrunner 工具与 (UI/Application Exerciser Monkey) 用户界面/ 应用程序测试工具 ,也称为 monkey 工具并无关联。 monkey
工具直接运行在设备或模拟器的 adb
shell 中,生成用户或系统的伪随机事件流。而 monkeyrunner 工具则是在工作站上通过 API 定义的特定命令和事件控制设备或模拟器。
monkeyrunner 工具为 Android 测试提供了以下特性:
多设备控制:monkeyrunner API 可以跨多个设备或模拟器实施测试套件。您可以在同一时间接上所有的设备或一次启动全部模拟器(或统统一起),依据程序依次连接到每一个,然后运行一个或多个测试。您也可以用程序启动一个配置好的模拟器,运行一个或多个测试,然后关闭模拟器。
功能测试: monkeyrunner 可以为一个应用自动贯彻一次功能测试。您提供按键或触摸事件的输入数值,然后观察输出结果的截屏。
回归测试:monkeyrunner 可以运行某个应用,并将其结果截屏与既定已知正确的结果截屏相比较,以此测试应用的稳定性。
可扩展的自动化:由于 monkeyrunner 是一个 API 工具包,您可以基于 Python 模块和程序开发一整套系统,以此来控制 Android 设备。除了使用 monkeyrunner API 之外,您还可以使用标准的 Python os
和 subprocess
模块来调用如 Android Debug Bridge 这样的 Android 工具 。
您还可以向 monkeyrunner API 中添加您自己的类。我们将在 使用插件扩展 monkeyrunner 一节中对此进行详细讨论 。
monkeyrunner 工具使用 Jython(使用 Java 编程语言的一种 Python 实现)。Jython 允许 monkeyrunnerAPI 与 Android 框架轻松的进行交互。使用 Jython,您可以使用 Python 语法来获取 API 中的常量、类以及方法。
一个简单的 monkeyrunner 程序实例 (A Simple monkeyrunner Program)
以下为一个简单的 monkeyrunner 程序,它将会连接到一个设备,创建一个 MonkeyDevice 对象。使用 MonkeyDevice 对象,程序将安装一个 Android 应用包,运行其中一个活动,并向其发送按键事件。程序接下来会将结果截图,创建一个 MonkeyImage 对象,并使用这个对象截图将保存至.png 文件。
The monkeyrunner API
monkeyrunnerAPI 于 com.android.monkeyrunner 包中包含三个模块:
MonkeyRunner
:一个为 monkeyrunner 程序提供工具方法的类。这个类提供了用于连接 monkeyrunner 至设备或模拟器的方法。它还提供了用于创建一个 monkeyrunner 程序的用户界面以及显示内置帮助的方法。
MonkeyDevice
:表示一个设备或模拟器。这个类提供了安装和卸载程序包、启动一个活动以及发送键盘或触摸事件到应用程序的方法。您也可以用这个类来运行测试包。
MonkeyImage
:表示一个截图对象。这个类提供了截图、将位图转换成各种格式、比较两个 MonkeyImage 对象以及写图像到文件的方法。
在 python 程序中,您将以 Python 模块的形式使用这些类。monkeyrunner 工具不会自动导入这些模块。您必须使用类似如下的 from 语句:
其中,为您想要导入的类名。您可以在一个 from 语句中导入超过一个模块,其间以逗号分隔。
Running monkeyrunner
您可以直接使用一个代码文件运行 monkeyrunner,抑或在交互式对话中输入 monkeyrunner 语句。不论使用哪种方式,您都需要调用 SDK 目录的 tools 子目录下的 monkeyrunner 命令。如果您提供一个文件名作为运行参数,则 monkeyrunner 将视文件内容为 Python 程序,并加以运行;否则,它将提供一个交互对话环境。
monkeyrunner 命令的语法为:
表 1 阐释了命令的标志和参数。
参数 | 说明 |
| (可选)指定一个内含 monkeyrunner 插件的 .jar 文件。欲了解更多关于 monkeyrunner 插件的内容,请参照 (Extending monkeyrunner with plugins) 使用插件扩展 monkeyrunner 。要指定多个文件,包括多次论证。如欲指定超过一个文件,可以多次使用此参数。 |
| 如果您指定此参数,monkeyrunner 将视文件内容为 Python 程序并予以执行。如果此参数未予指定,则开启一个交互式会话。 |
| (可选)<程序文件名> 所指定的程序所需的参数 |
monkeyrunner 内建帮助 (monkeyrunner Built-in Help)
您可以用以下命令来生成 monkeyrunner 的 API 参考:
参数说明:
可以为 text
或 html
,分别代表纯文本和 HTML 输出。
指定了输出文件的全路经名称。
使用插件扩展 monkeyrunner(Extending monkeyrunner with Plugins)
您可以用 Java 语言创建新的类,并打包成一个或多个 .jar
文件,以此来扩展 monkeyrunnerAPI。您可以使用您自己写的类或者继承现有的类来扩展 monkeyrunnerAPI。您还可以使用此功能来初始化 monkeyrunner 环境。
为了使 monkeyrunner 加载一个插件,您应当如使用如 表 1 中所述的 -plugin
参数来调用 monkeyrunner 命令。
在您编写的插件中,您可以导入或继承位于 com.android.monkeyrunner 包中的几个主要的 monkeyrunner 类:MonkeyDevice, MonkeyImage 和 MonkeyRunner(参见 monkeyrunnerAPI )。
请注意,插件无法让你访问 Android 的 SDK。您不能导入 com.android.app 等包。这是因为 monkeyrunner 是在框架 API 层次之下与设备或模拟器进行交互的。
插件启动类 (The plugin startup class)
用于插件的.jar 文件可以指定一个类,使其在脚本执行之前就实例化。如欲指定这个类,您需要在.jar 文件的 manifest 中添加键 MonkeyRunnerStartupRunner。其值为启动时运行的类的名称。以下代码段显示了如何在一个 ant 构建脚本达到这样的目的:
如欲访问 monkeyrunner 的运行时环境,启动类可以实现 com.google.common.base.Predicate<PythonInterpreter>。例如,用这个类在默认的命名空间中设置一些变量:
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论