一个 monkeyrunner 类,代表运行 monkeyrunner
的工作站可访问的设备或模拟器。
此类用于控制 Android 设备或模拟器。这些方法发送 UI 事件、检索信息、安装和删除应用程序以及运行应用程序。
您通常不需要创建 MonkeyDevice
的实例。相反,您使用 MonkeyRunner.waitForConnection()
从与设备或模拟器的连接创建新对象。例如,您无需使用
newdevice = MonkeyDevice()
而是使用
newdevice = MonkeyRunner.waitForConnection()
摘要
常量 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
字符串 | DOWN | 将其与 press() 或 touch() 的 type 参数一起使用,以发送 DOWN 事件。 |
|||||||||
字符串 | UP | 将其与 press() 或 touch() 的 type 参数一起使用,以发送 UP 事件。 |
|||||||||
字符串 | DOWN_AND_UP | 将其与 press() 或 touch() 的 type 参数一起使用,以发送 DOWN 事件,紧随其后是 UP 事件。 |
方法 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
|
将 Intent 广播到此设备,就好像 Intent 来自应用程序一样。
|
||||||||||
|
模拟此设备屏幕上的拖动手势(触摸、按住和移动)。
|
||||||||||
|
给定系统环境变量的名称,返回此设备的值。可用的变量名称列在该方法的 详细说明 中。
|
||||||||||
|
. adb shell getprop <key>. 此功能供平台开发人员使用。
|
||||||||||
|
将 packageFile 中包含的 Android 应用程序或测试包安装到此设备上。如果应用程序或测试包已安装,则将其替换。
|
||||||||||
|
在 Android instrumentation 下运行指定的组件,并将结果返回到字典中,该字典的精确格式由运行的组件决定。该组件必须已存在于此设备上。
|
||||||||||
|
将 type 指定的键事件发送到 keycode 指定的键。
|
||||||||||
|
将此设备重新启动到 bootloadType 指定的引导加载程序中。
|
||||||||||
|
从此设备删除指定的包,包括其数据和缓存。
|
||||||||||
|
执行
adb shell 命令并返回结果(如果有)。 |
||||||||||
|
通过发送从提供的参数构建的 Intent 在此设备上启动 Activity。
|
||||||||||
MonkeyImage
|
捕获此设备的整个屏幕缓冲区,生成一个
MonkeyImage 对象,其中包含当前显示的屏幕截图。 |
||||||||||
|
将 type 指定的触摸事件发送到 x 和 y 指定的屏幕位置。
|
||||||||||
|
将 message 中包含的字符发送到此设备,就好像它们是在设备的键盘上输入的一样。这等同于对
message 中的每个 keycode 使用键事件类型 DOWN_AND_UP 调用 press() 。 |
||||||||||
|
唤醒此设备的屏幕。
|
常量
公共方法
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)
给定系统环境变量的名称,返回该变量在此设备上的值。
参数
key | 系统环境变量的名称。可用的变量名称列在本文档末尾的 表 1. 属性变量名称 中。 |
---|
Returns
- 变量的值。数据格式根据所请求的变量而异。
object getSystemProperty (string key)
void installPackage (string path)
将 packageFile 中包含的 Android 应用程序或测试包安装到此设备上。如果应用程序或测试包已安装,则将其替换。
参数
path | 要安装的 .apk 文件的完整路径和文件名。 |
---|
dictionary instrument ( string className, dictionary args)
使用 Android Instrumentation 运行指定的组件,并将结果返回到字典中,该字典的精确格式由正在运行的组件决定。该组件必须已存在于此设备上。
使用此方法启动使用 Android 测试用例类的测试用例。请参阅 测试基础,详细了解如何使用 Android 测试框架进行单元测试。
参数
className | 已安装在此设备上的 Android 组件的名称,采用标准形式 packagename/classname,其中 packagename 是此设备上 .apk 文件的 Android 包名称,classname 是该文件中的 Android 组件(Activity、ContentProvider、Service 或 BroadcastReceiver)的类名。packagename 和 classname 必须是完全限定的。请参阅 ComponentName 获取更多详细信息。 |
---|---|
args | 包含标志及其值的字典。这些标志在组件启动时传递给组件。如果标志不接受值,请将其字典值设置为空字符串。 |
Returns
-
包含组件输出的字典。字典的内容由组件本身定义。
如果您使用
InstrumentationTestRunner
作为 componentName 参数中的类名,那么结果字典将包含单个键 "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 调试桥 中描述。 |
---|
Returns
- 命令的结果(如果有)。结果的格式由命令决定。
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 ()
捕获此设备的整个屏幕缓冲区,从而生成当前显示的屏幕截图。
Returns
- 包含当前显示图像的 MonkeyImage 对象。
void touch ( integer x, integer y, string type)
将 type 指定的触摸事件发送到 x 和 y 指定的屏幕位置。
参数
x | 触摸在实际设备像素中的水平位置,从屏幕在当前方向上的左侧开始。 |
---|---|
y | 触摸在实际设备像素中的垂直位置,从屏幕在当前方向上的顶部开始。 |
type | 要发送的按键事件的类型。允许的值为 DOWN 、UP 和 DOWN_AND_UP 。 |
void type (string message)
将 message 中包含的字符发送到此设备,就像它们是在设备的键盘上输入的一样。这相当于使用按键事件类型 DOWN_AND_UP
对 message
中的每个按键码调用 press()
。
参数
message | 包含要发送的字符的字符串。 |
---|
void wake ()
唤醒此设备的屏幕。
附录
属性组 | 属性 | 描述 | 备注 |
---|---|---|---|
build |
board |
设备系统主板的代号 | 请参阅 Build |
brand |
为其定制 OS 的运营商或提供商。 | ||
device |
设备设计名称。 | ||
fingerprint |
当前运行的版本的唯一标识符。 | ||
host |
|||
ID |
变更列表编号或标签。 | ||
model |
设备的最终用户可见名称。 | ||
product |
产品的整体名称。 | ||
tags |
描述版本的逗号分隔标签,例如 "unsigned" 和 "debug"。 | ||
type |
版本类型,例如 "user" 或 "eng"。 | ||
user |
|||
CPU_ABI |
本机代码指令集的名称,采用 CPU 类型加 ABI 约定的形式。 | ||
manufacturer |
产品/硬件制造商。 | ||
version.incremental |
源代码控制系统用来表示此版本软件的内部代码。 | ||
version.release |
此版本软件的用户可见名称。 | ||
version.sdk |
与此版本 OS 关联的用户可见 SDK 版本。 | ||
version.codename |
当前的开发代号,如果此版本软件已发布,则为 "REL"。 | ||
display |
width |
设备的显示宽度(以像素为单位)。 | 请参阅 DisplayMetrics 获取详细信息。 |
height |
设备的显示高度(以像素为单位)。 | ||
density |
显示的逻辑密度。这是一个将 DIP(与密度无关的像素)单位缩放到设备分辨率的系数。DIP 的调整方式为:在 160 像素每英寸的显示屏上,1 DIP 等于 1 个像素。例如,在 160 dpi 的屏幕上,density = 1.0,而在 120 dpi 的屏幕上,density = .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 。 |
运行时间 |
设备重启后的毫秒数,不包括深度睡眠时间。 | ||
毫秒 |
自 UNIX 纪元以来的当前时间,以毫秒为单位。 |