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 事件。
方法
无效 broadcastIntent (字符串 uri, 字符串 action, 字符串 data, 字符串 mimetype, 可迭代 categories 字典 extras, 组件 component, 可迭代 flags)
将 Intent 广播到此设备,就像 Intent 来自应用程序一样。
无效 drag (元组 start, 元组 end, 浮点数 duration, 整数 steps)
模拟此设备屏幕上的拖动手势(触摸、按住和移动)。
对象 getProperty (字符串 key)
给定系统环境变量的名称,返回此设备的值。可用的变量名称列在此方法的详细说明中。
对象 getSystemProperty (字符串 key)
。等效于 adb shell getprop <key> 的 API。这是为平台开发者提供的。
无效 installPackage (字符串 path)
将 packageFile 中包含的 Android 应用程序或测试包安装到此设备上。如果已安装应用程序或测试包,则将其替换。
字典 instrument (字符串 className, 字典 args)
在 Android 检测下运行指定的组件,并在字典中返回结果,其确切格式由正在运行的组件决定。此组件必须已存在于此设备上。
无效 press (字符串 name, 字典 type)
将 type 指定的按键事件发送到 keycode 指定的按键。
无效 reboot (字符串 into)
将此设备重新引导到 bootloadType 指定的引导加载程序。
无效 removePackage (字符串 package)
从此设备中删除指定的包,包括其数据和缓存。
对象 shell (字符串 cmd)
执行 adb shell 命令并返回结果(如果有)。
无效 startActivity (字符串 uri, 字符串 action, 字符串 data, 字符串 mimetype, 可迭代 categories 字典 extras, 组件 component, flags)
通过发送从提供的参数构建的 Intent,在此设备上启动 Activity。
MonkeyImage takeSnapshot()
捕获此设备的整个屏幕缓冲区,生成一个 MonkeyImage 对象,其中包含当前显示的屏幕截图。
无效 touch (整数 x, 整数 y, 整数 type)
将 type 指定的触摸事件发送到 x 和 y 指定的屏幕位置。
无效 type (字符串 message)
将 message 中包含的字符发送到此设备,就像它们已在设备的键盘上输入一样。这等效于使用按键事件类型 DOWN_AND_UPmessage 中的每个按键码调用 press()
无效 唤醒 ()
唤醒此设备的屏幕。

常量

字符串 DOWN

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

字符串 UP

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

字符串 DOWN_AND_UP

press()touch()type() 值。指定应将 DOWN 事件类型后跟 UP 事件类型发送到设备,对应于键入按键或单击屏幕。

公共方法

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)

给定系统环境变量的名称,返回此设备的值。

参数
key 系统环境变量的名称。可用的变量名称列在本文档末尾的 表 1. 属性变量名称 中。
返回值
  • 变量的值。数据格式根据请求的变量而有所不同。

对象 getSystemProperty (字符串 key)

getProperty() 的同义词。

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

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 要发送的按键事件类型。允许的值为 DOWNUPDOWN_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 ()

捕获此设备的整个屏幕缓冲区,生成当前显示的屏幕截图。

返回值

void touch ( 整数 x, 整数 y, 字符串 type)

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

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

void type (字符串 message)

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

参数
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 会进行调整,以便 1 DIP 在 160 像素/英寸的显示器上等效于一个像素。例如,在 160 dpi 的屏幕上,density = 1.0,而在 120 dpi 的屏幕上,density = .75。

该值并不完全遵循实际的屏幕尺寸,而是会进行调整以符合显示器 DPI 的大幅变化。有关更多详细信息,请参阅 density

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