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 事件。
方法
void broadcastIntent (string uri, string action, string data, string mimetype, iterable categories dictionary extras, component component, iterable flags)
向此设备广播 Intent,就像 Intent 来自应用一样。
void drag (tuple start, tuple end, float duration, integer steps)
在此设备的屏幕上模拟拖动手势(轻触、按住和移动)。
object getProperty (string key)
在给定系统环境变量的名称后,返回此设备的相应值。此方法的详细说明中列出了可用的变量名称。
object getSystemProperty (string key)
. adb shell getprop <key>. 的等效 API。This is provided for use by platform developers.
void installPackage (string path)
将包含在 packageFile 中的 Android 应用或测试软件包安装到此设备上。如果应用或测试软件包已安装,则会被替换。
dictionary instrument (string className, dictionary args)
在 Android 插桩下运行指定的组件,并在字典中返回结果,该字典的具体格式由正在运行的组件决定。该组件必须已存在于此设备上。
void press (string name, dictionary type)
将 type 指定的按键事件发送到键码指定的按键。
void reboot (string into)
将此设备重新启动到 bootloadType 指定的引导加载程序中。
void removePackage (string package)
从此设备中删除指定的软件包,包括其数据和缓存。
object shell (string cmd)
执行 adb shell 命令并返回结果(如果有)。
void startActivity (string uri, string action, string data, string mimetype, iterable categories dictionary extras, component component, flags)
通过发送根据提供的参数构造的 Intent,在此设备上启动一个 Activity。
MonkeyImage takeSnapshot()
捕获此设备的整个屏幕缓冲区,并生成一个 MonkeyImage 对象,其中包含当前显示的屏幕截图。
void touch (integer x, integer y, integer type)
将 type 指定的轻触事件发送到由 x 和 y 指定的屏幕位置。
void type (string message)
将消息中包含的字符发送到此设备,就好像这些字符是在设备键盘上输入的一样。这等同于使用 DOWN_AND_UP 类型的按键事件针对 message 中的每个键码调用 press()
void wake ()
唤醒此设备的屏幕。

常量

string DOWN

press()touch() 值。指定应将 DOWN 类型的事件发送到设备,对应于按下某个键或轻触屏幕。

string UP

press()touch() 值。指定应将 UP 类型的事件发送到设备,对应于释放某个键或从屏幕抬起。

string DOWN_AND_UP

press()touch()type() 值。指定应先后将 DOWN 类型的事件及 UP 类型的事件发送到设备,对应于按下某个键或点击屏幕。

公开方法

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. 属性变量名称中列出了可用的变量名称。
返回
  • 变量的值。数据格式会根据所请求的变量而变化。

object getSystemProperty (string key)

getProperty() 的同义词。

参数
key 系统环境变量的名称。表 1. 属性变量名称中列出了可用的变量名称。
返回
  • 变量的值。数据格式会根据所请求的变量而变化。

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 要发送的按键事件的类型。允许的值包括 DOWNUPDOWN_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 要发送的按键事件的类型。允许的值包括 DOWNUPDOWN_AND_UP

void type (string message)

将消息中包含的字符发送到此设备,就好像在设备的键盘上输入这些字符一样。这等同于使用 DOWN_AND_UP 类型的按键事件针对 message 中的每个键码调用 press()

参数
message 包含要发送的字符的字符串。

void wake ()

唤醒此设备的屏幕。


附录

表 1. getProperty()getSystemProperty() 配合使用的属性变量名称。

属性组 属性 说明 备注
build board 设备主板的代号 请参阅 Build
brand 为其定制操作系统的运营商或提供商。
device 设备设计名称。
fingerprint 当前正在运行的编译版本的唯一标识符。
host
ID 变更清单编号或标签。
model 设备的最终用户可见名称。
product 整体产品名称。
tags 描述编译版本的逗号分隔标记,例如“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 相当于 160 ppi 显示屏上的一个像素。例如,在 160 dpi 屏幕上,密度为 1.0,而在 120 dpi 屏幕上,密度为 0.75。

该值并非与实际屏幕尺寸完全相符,但会根据显示屏 DPI 中的大幅变化进行调整。如需了解详情,请参阅 density

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 纪元开始算起的当前时间(以毫秒为单位)。