一个 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> 的 API。这是为平台开发者提供的。
|
||||||||||
|
将 packageFile 中包含的 Android 应用程序或测试包安装到此设备上。如果已安装应用程序或测试包,则将其替换。
|
||||||||||
|
在 Android 检测下运行指定的组件,并在字典中返回结果,其确切格式由正在运行的组件决定。此组件必须已存在于此设备上。
|
||||||||||
|
将 type 指定的按键事件发送到 keycode 指定的按键。
|
||||||||||
|
将此设备重新引导到 bootloadType 指定的引导加载程序。
|
||||||||||
|
从此设备中删除指定的包,包括其数据和缓存。
|
||||||||||
|
执行
adb shell 命令并返回结果(如果有)。 |
||||||||||
|
通过发送从提供的参数构建的 Intent,在此设备上启动 Activity。
|
||||||||||
MonkeyImage
|
捕获此设备的整个屏幕缓冲区,生成一个
MonkeyImage 对象,其中包含当前显示的屏幕截图。 |
||||||||||
|
将 type 指定的触摸事件发送到 x 和 y 指定的屏幕位置。
|
||||||||||
|
|
||||||||||
|
唤醒此设备的屏幕。
|
常量
公共方法
void broadcastIntent ( 字符串 uri, 字符串 action, 字符串 data, 字符串 mimetype, 可迭代对象 categories 字典 extras, 组件 component, 可迭代对象 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() 以获取示例)。每个字典项目的键应为 字符串。项目的 value 可以是任何简单或结构化数据类型。 |
component | 此 Intent 的组件(请参阅 ComponentName )。使用此参数会将 Intent 指向特定 Android 包中的特定类。 |
flags | 包含控制 Intent 处理方式的标志的可迭代数据结构(请参阅 Intent.setFlags() )。 |
void drag ( 元组 start, 元组 end, 浮点数 duration, 整数 steps)
模拟此设备屏幕上的拖动手势(触摸、按住和移动)。
参数
start | 拖动手势的起点,以 元组 (x,y) 的形式表示,其中 x 和 y 为 整数。 |
---|---|
end | 拖动手势的终点,以 元组 (x,y) 的形式表示,其中 x 和 y 为 整数。 |
duration | 拖动手势的持续时间(以秒为单位)。默认值为 1.0 秒。 |
steps | 插值点时要执行的步数。默认值为 10。 |
对象 getProperty (字符串 key)
对象 getSystemProperty (字符串 key)
void installPackage (字符串 path)
将 packageFile 中包含的 Android 应用程序或测试包安装到此设备上。如果已安装应用程序或测试包,则将其替换。
参数
path | 要安装的 .apk 文件的完整限定路径和文件名。 |
---|
字典 instrument ( 字符串 className, 字典 args)
使用 Android Instrumentation 运行指定的组件,并将结果返回到字典中,其确切格式由正在运行的组件决定。该组件必须已存在于此设备上。
使用此方法启动使用 Android 测试用例类之一的测试用例。有关使用 Android 测试框架进行单元测试的更多信息,请参阅 测试基础知识。
参数
className | 已安装在此设备上的 Android 组件的名称,采用标准形式 packagename/classname,其中 packagename 是此设备上 .apk 文件的 Android 包名称,classname 是该文件中 Android 组件(Activity、ContentProvider、Service 或 BroadcastReceiver)的类名。packagename 和 classname 都必须是完全限定的。有关更多详细信息,请参阅 ComponentName 。 |
---|---|
args | 包含标志及其值的字典。这些标志在组件启动时传递给它。如果标志不带值,则将其字典值设置为空字符串。 |
返回值
-
包含组件输出的字典。字典的内容由组件本身定义。
如果使用
InstrumentationTestRunner
作为 componentName 参数中的类名,则结果字典包含单个键“stream”。“stream”的值是包含测试输出的 字符串,就像从命令行运行InstrumentationTestRunner
一样。此输出的格式在 其他 IDE 中的测试 中进行了描述。
void press (字符串 name, 整数 type)
将 type
指定的按键事件发送到 keycode
指定的按键。
参数
name | 要发送的按键码的名称。有关按键码名称列表,请参阅 KeyEvent 。使用按键码名称,而不是其整数值。 |
---|---|
type | 要发送的按键事件类型。允许的值为 DOWN 、UP 和 DOWN_AND_UP 。 |
void reboot (字符串 bootloadType)
将此设备重新启动到 bootloadType
指定的引导加载程序。
参数
into | 要重新启动到的引导加载程序类型。允许的值为“bootloader”、“recovery”或“None”。 |
---|
void removePackage (字符串 package)
从此设备中删除指定的包,包括其数据和缓存。
参数
package | 此设备上 .apk 文件的 Android 包名称。 |
---|
对象 shell (字符串 cmd)
执行 adb
shell 命令并返回结果(如果有)。
参数
cmd | 在 adb shell 中执行的命令。这些命令的形式在主题 Android 调试桥 中进行了描述。 |
---|
返回值
- 命令的结果(如果有)。结果的格式由命令确定。
void startActivity ( 字符串 uri, 字符串 action, 字符串 data, 字符串 mimetype, 可迭代对象 categories 字典 extras, 组件 component, 可迭代对象 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() 以获取示例)。每个字典项目的键应为 字符串。项目的 value 可以是任何简单或结构化数据类型。 |
component | Intent 的组件(请参阅 ComponentName )。使用此参数会将 Intent 指向特定 Android 包中的特定类。 |
flags | 包含控制 Intent 处理方式的标志的可迭代数据结构(请参阅 Intent.setFlags() )。 |
MonkeyImage
takeSnapshot ()
捕获此设备的整个屏幕缓冲区,生成当前显示的屏幕截图。
返回值
- 包含当前显示图像的 MonkeyImage 对象。
void touch ( 整数 x, 整数 y, 字符串 type)
将 type 指定的触摸事件发送到 x 和 y 指定的屏幕位置。
参数
x | 触摸在实际设备像素中的水平位置,从屏幕左侧的当前方向开始。 |
---|---|
y | 触摸在实际设备像素中的垂直位置,从屏幕顶部的当前方向开始。 |
type | 要发送的按键事件类型。允许的值为 DOWN 、UP 和 DOWN_AND_UP 。 |
void type (字符串 message)
将 message 中包含的字符发送到此设备,就像它们已在设备键盘上输入一样。这等效于对 message
中的每个按键码调用 press()
,使用按键事件类型 DOWN_AND_UP
。
参数
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 会进行调整,以便 1 DIP 在 160 像素/英寸的显示器上等效于一个像素。例如,在 160 dpi 的屏幕上,density = 1.0,而在 120 dpi 的屏幕上,density = .75。 该值并不完全遵循实际的屏幕尺寸,而是会进行调整以符合显示器 DPI 的大幅变化。有关更多详细信息,请参阅 |
||
am.current |
package |
当前正在运行的包的 Android 包名称。 | am.current 键返回有关当前正在运行的 Activity 的信息。 |
action |
当前活动的 action。其格式与包清单中 action 元素的 name 属性相同。 |
||
comp.class |
启动当前 Activity 的组件的类名。有关更多详细信息,请参阅 comp.package 。 |
||
comp.package |
启动当前 Activity 的组件的包名。组件由包名和包中包含的类名指定。 | ||
data |
启动当前 Activity 的 Intent 中包含的数据(如果有)。 | ||
categories |
启动当前 Activity 的 Intent 指定的类别。 | ||
clock |
realtime |
设备重启后经过的毫秒数,包括深度睡眠时间。 | 有关更多信息,请参阅 SystemClock 。 |
uptime |
设备重启后经过的毫秒数,不包括深度睡眠时间。 | ||
millis |
自 UNIX 纪元以来的当前时间(以毫秒为单位)。 |