MonkeyDevice 是一个 monkeyrunner 类,用来表示可通过运行 monkeyrunner
的工作站访问的设备或模拟器。
此类用于控制 Android 设备或模拟器。相关方法会发送界面事件,检索信息,安装和移除应用,以及运行应用。
您通常不必创建 MonkeyDevice
实例,而是可以使用
MonkeyRunner.waitForConnection()
根据与设备或模拟器的连接创建新对象。例如,不使用:
newdevice = MonkeyDevice()
而是使用:
newdevice = MonkeyRunner.waitForConnection()
摘要
常量 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
string | DOWN |
将此参数与 press() 或 touch()
的 type 参数一起使用可发送 DOWN 事件。
|
|||||||||
string | UP |
将此参数与 press() 或 touch()
的 type 参数一起使用可发送 UP 事件。
|
|||||||||
string | DOWN_AND_UP |
将此参数与 press() 或 touch()
的 type 参数一起使用可发送 DOWN 事件,紧跟着发送 UP 事件。
|
方法 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
|
向此设备广播一个 Intent,就像此 Intent 来自某个应用一样。
|
||||||||||
|
在此设备的屏幕上模拟拖动手势(轻触、按住和移动)。
|
||||||||||
|
在给定系统环境变量的名称后,返回此设备的相应值。此方法的详细说明中列出了可用的变量名称。
|
||||||||||
|
.
adb shell getprop <key>. This is provided for use
by platform developers.
的等效 API |
||||||||||
|
将包含在 packageFile 中的 Android 应用或测试软件包安装到此设备上。如果应用或测试软件包已安装,则会被替换。
|
||||||||||
|
在 Android 插桩下运行指定的组件,并在字典中返回结果,该字典的具体格式由正在运行的组件决定。该组件必须已存在于此设备上。
|
||||||||||
|
将 type 指定的键事件发送到键码指定的键。
|
||||||||||
|
将此设备重新启动到 bootloadType 指定的引导加载程序中。
|
||||||||||
|
从此设备中删除指定的软件包,包括其数据和缓存。
|
||||||||||
|
执行
adb shell 命令并返回结果(如果有)。
|
||||||||||
|
通过发送根据提供的参数构造的 Intent,在此设备上启动一个 Activity。
|
||||||||||
MonkeyImage
|
捕获此设备的整个屏幕缓冲区,从而生成一个
MonkeyImage
对象,其中包含当前显示内容的屏幕截图。
|
||||||||||
|
将 type 指定的轻触事件发送到由 x 和 y 指定的屏幕位置。
|
||||||||||
|
|
||||||||||
|
唤醒此设备的屏幕。
|
常量
公共方法
void broadcastIntent ( string uri, string action, string data, string mimetype, iterable categories dictionary extras, component component, iterable flags)
向此设备广播一个 Intent,就像此 Intent 来自某个应用一样。如需详细了解这些参数,请参阅 Intent
。
参数
uri |
Intent 的 URI。(请参阅 Intent.setData() )。
|
---|---|
action |
此 Intent 的操作(请参阅 Intent.setAction() )。
|
data |
此 Intent 的数据 URI(请参阅 Intent.setData() )。
|
mimetype |
此 Intent 的 MIME 类型(请参阅 Intent.setType() )。
|
categories |
一种可迭代数据结构,包含定义此 Intent 的类别的字符串(请参阅 Intent.addCategory() )。
|
extras |
此 Intent 的额外数据字典(有关示例,请参阅 Intent.putExtra() )。
每个字典项的键都应该是一个字符串。字典项的值可以是任意简单或结构化数据类型。 |
component |
此 Intent 的组件(请参阅 ComponentName )。使用此参数可将此 Intent 指向特定 Android 软件包中的特定类。
|
flags |
一种可迭代数据结构,包含可控制此 Intent 处理方式的标志(请参阅 Intent.setFlags() )。
|
void drag ( tuple start, tuple end, float duration, integer steps)
在此设备的屏幕上模拟拖动手势(轻触、按住和移动)。
参数
start | 拖动手势的起点,以元组 (x,y) 格式指定,其中 x 和 y 是整数。 |
---|---|
end | 拖动手势的终点,以元组 (x,y) 格式指定,其中 x 和 y 是整数。 |
duration | 拖动手势的时长,以秒为单位。默认值是 1.0 秒。 |
steps | 插入点时需执行的步骤数。默认值为 10。 |
object getProperty (string key)
object getSystemProperty (string key)
void installPackage (string path)
将包含在 packageFile 中的 Android 应用或测试软件包安装到此设备上。如果应用或测试软件包已安装,则会被替换。
参数
path |
要安装的 .apk 文件的完全限定路径和文件名。
|
---|
dictionary instrument ( string className, dictionary args)
使用 Android 插桩运行指定的组件,并返回字典形式的结果,字典格式由正在运行的组件决定。该组件必须已存在于此设备上。
使用此方法启动使用 Android 的某个测试用例类的测试用例。如需详细了解如何使用 Android 测试框架运行单元测试,请参阅测试基础知识。
参数
className |
已安装到此设备上的 Android 组件的名称,采用标准格式 packagename/classname,其中 packagename 是此设备上的 .apk 文件的 Android 软件包名称,classname 是该文件中的 Android 组件(Activity、ContentProvider、Service 或 BroadcastReceiver)的类名称。packagename 和 classname 都必须是完全限定的。如需了解详情,请参阅 ComponentName 。
|
---|---|
args | 包含标志及其值的字典。它们会在组件启动时传递给组件。如果该标志没有值,请将其字典值设置为空字符串。 |
返回
-
包含组件输出的字典。字典的内容由组件本身定义。
如果您在 componentName 参数中使用
InstrumentationTestRunner
作为类名,则结果字典将包含单个键“stream”。“stream”的值是包含测试输出的字符串,就像从命令行运行InstrumentationTestRunner
一样。在其他 IDE 中进行测试一文介绍了此输出的格式。
void press (string name, integer type)
将 type
指定的键事件发送到 keycode
指定的键。
参数
name |
要发送的键码的名称。如需查看键码名称列表,请参阅 KeyEvent 。请使用键码名称,而不是对应的整数值。
|
---|---|
type |
要发送的键事件的类型。允许的值包括
DOWN 、UP 和 DOWN_AND_UP 。
|
void reboot (string bootloadType)
将此设备重新启动到 bootloadType
指定的引导加载程序中。
参数
into | 要重新启动至的引导加载程序的类型。允许的值为“bootloader”“recovery”或“None”。 |
---|
void removePackage (string package)
从此设备中删除指定的软件包,包括其数据和缓存。
参数
package |
此设备上的 .apk 文件的 Android 软件包名称。
|
---|
object shell (string cmd)
执行 adb
shell 命令并返回结果(如果有)。
参数
cmd |
要在 adb shell 中执行的命令。Android 调试桥一文介绍了这些命令的格式。
|
---|
返回
- 相关命令的结果(如果有)。结果的格式由命令确定。
void startActivity ( string uri, string action, string data, string mimetype, iterable categories dictionary extras, component component, iterable flags)
通过发送根据提供的参数构造的 Intent,在此设备上启动一个 Activity。
参数
uri |
Intent 的 URI(请参阅 Intent.setData() )。
|
---|---|
action |
此 Intent 的操作(请参阅 Intent.setAction() )。
|
data |
此 Intent 的数据 URI(请参阅 Intent.setData() )。
|
mimetype |
此 Intent 的 MIME 类型(请参阅 Intent.setType() )。
|
categories |
一种可迭代数据结构,包含定义此 Intent 的类别的字符串(请参阅 Intent.addCategory() )。
|
extras |
此 Intent 的额外数据字典(有关示例,请参阅 Intent.putExtra() )。
每个字典项的键都应该是一个字符串。字典项的值可以是任意简单或结构化数据类型。 |
component |
此 Intent 的组件(请参阅 ComponentName )。使用此参数可将此 Intent 指向特定 Android 软件包中的特定类。
|
flags |
一种可迭代数据结构,包含可控制此 Intent 处理方式的标志(请参阅 Intent.setFlags() )。
|
MonkeyImage
takeSnapshot
()
捕获此设备的整个屏幕缓冲区,并生成当前显示内容的屏幕截图。
返回
- 一个包含当前屏幕截图的 MonkeyImage 对象。
void touch ( integer x, integer y, string type)
将 type 指定的轻触事件发送到由 x 和 y 指定的屏幕位置。
参数
x | 用实际的设备像素表示的轻触操作所在水平位置,从当前方向的屏幕左边开始。 |
---|---|
y | 用实际的设备像素表示的轻触操作所在垂直位置,从当前方向的屏幕顶部开始。 |
type |
要发送的键事件的类型。允许的值包括
DOWN 、UP 和 DOWN_AND_UP 。
|
void type (string message)
将消息中包含的字符发送到此设备,就好像这些字符是用设备的键盘输入的一样。这等同于使用键事件类型 DOWN_AND_UP
针对 message
中的每个键码调用 press()
。
参数
message | 包含要发送的字符的字符串。 |
---|
void wake ()
唤醒此设备的屏幕。
附录
属性组 | 属性 | 说明 | 备注 |
---|---|---|---|
build |
board |
设备系统主板的代号 |
请参阅 Build
|
brand |
为其定制操作系统的运营商或提供商。 | ||
device |
设备设计名称。 | ||
fingerprint |
当前正在运行的 build 的唯一标识符。 | ||
host |
|||
ID |
变更清单编号或标签。 | ||
model |
设备的最终用户可见名称。 | ||
product |
整体产品名称。 | ||
tags |
描述 build 的逗号分隔标记,例如“unsigned”和“debug”。 | ||
type |
构建类型,例如“user”或“eng”。 | ||
user |
|||
CPU_ABI |
原生代码指令集的名称,格式为 CPU 类型加 ABI 惯例。 | ||
manufacturer |
产品/硬件制造商。 | ||
version.incremental |
源代码控制系统用来表示此版本的软件的内部代号。 | ||
version.release |
此版本的软件的用户可见名称。 | ||
version.sdk |
与此版本的操作系统相关联的用户可见 SDK 版本。 | ||
version.codename |
当前开发代号,如果此版本的软件已发布,则为“REL”。 | ||
display |
width |
设备的屏幕宽度(以像素为单位)。 |
如需了解详情,请参阅 DisplayMetrics 。
|
height |
设备的显示屏高度(以像素为单位)。 | ||
density |
屏幕的逻辑密度。系统会按照此系数调整 DIP(密度无关像素)单位,以适应设备的分辨率。调整 DIP 是为了使 1 DIP 相当于 160ppi 屏幕上的一个像素。例如,在 160dpi 屏幕上,密度为 1.0,而在 120dpi 屏幕上,密度为 0.75。
该值并非与实际屏幕尺寸完全相符,但会根据屏幕 DPI 的大幅变化进行调整。如需了解详情,请参阅 |
||
am.current |
package |
当前正在运行的软件包的 Android 软件包名称。 |
am.current 键可返回当前正在运行的 Activity 的相关信息。
|
action |
当前 Activity 的操作。其格式与软件包清单中 action 元素的 name 属性相同。
|
||
comp.class |
启动当前 Activity 的组件的类名称。如需了解详情,请参阅 comp.package 。 |
||
comp.package |
启动当前 Activity 的组件的软件包名称。组件由软件包名称和软件包所包含的类的名称指定。 | ||
data |
启动当前 Activity 的 Intent 中包含的数据(如果有)。 | ||
categories |
由启动当前 Activity 的 Intent 指定的类别。 | ||
clock |
realtime |
自设备重新启动后经过的毫秒数,包括深度睡眠时间。 |
如需了解详情,请参阅 SystemClock 。
|
uptime |
自设备重新启动后经过的毫秒数,不包括深度睡眠时间 | ||
millis |
从 UNIX 纪元开始算起的当前时间(以毫秒为单位)。 |