MonkeyDevice

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>. This is provided for use by platform developers. 的等效 API
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 当前正在运行的 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 的大幅变化进行调整。如需了解详情,请参阅 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 纪元开始算起的当前时间(以毫秒为单位)。