MonkeyDevice

一个 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 事件。
方法
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>. 此功能供平台开发人员使用。
void installPackage (string path)
将 packageFile 中包含的 Android 应用程序或测试包安装到此设备上。如果应用程序或测试包已安装,则将其替换。
dictionary instrument (string className, dictionary args)
在 Android instrumentation 下运行指定的组件,并将结果返回到字典中,该字典的精确格式由运行的组件决定。该组件必须已存在于此设备上。
void press (string name, dictionary type)
将 type 指定的键事件发送到 keycode 指定的键。
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)
将 message 中包含的字符发送到此设备,就好像它们是在设备的键盘上输入的一样。这等同于对 message 中的每个 keycode 使用键事件类型 DOWN_AND_UP 调用 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. 属性变量名称 中。
Returns
  • 变量的值。数据格式根据所请求的变量而异。

object getSystemProperty (string key)

getProperty() 的同义词。

参数
key 系统环境变量的名称。可用的变量名称列在 表 1. 属性变量名称 中。
Returns
  • 变量的值。数据格式根据所请求的变量而异。

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 要发送的按键事件的类型。允许的值为 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 调试桥 中描述。
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

void touch ( integer x, integer y, string type)

将 type 指定的触摸事件发送到 x 和 y 指定的屏幕位置。

参数
x 触摸在实际设备像素中的水平位置,从屏幕在当前方向上的左侧开始。
y 触摸在实际设备像素中的垂直位置,从屏幕在当前方向上的顶部开始。
type 要发送的按键事件的类型。允许的值为 DOWNUPDOWN_AND_UP

void type (string message)

将 message 中包含的字符发送到此设备,就像它们是在设备的键盘上输入的一样。这相当于使用按键事件类型 DOWN_AND_UPmessage 中的每个按键码调用 press()

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

void wake ()

唤醒此设备的屏幕。


附录

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

属性组 属性 描述 备注
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 的大幅变化。请参阅 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
运行时间 设备重启后的毫秒数,包括深度睡眠时间。
毫秒 自 UNIX 纪元以来的当前时间,以毫秒为单位。