monkey and crocodile_monkey and crocodile

monkey and crocodile_monkey and crocodilemonkeyrunner工具提供了一个API,用于编写可从Android代码外部控制Android设备或模拟器的程序

monkey and crocodile_monkey and crocodile

monkeyrunner 工具提供了一个 API,用于编写可从 Android 代码外部控制 Android 设备或模拟器的程序。使用 monkeyrunner,您可以编写 Python 程序来安装 Android 应用或测试软件包,运行该应用或软件包,向其发送模拟击键,截取其界面的屏幕截图,并将屏幕截图存储到工作站中。monkeyrunner 工具主要用于在功能/框架级测试应用和设备以及运行单元测试套件,但您也可以自由地将其用于其他目的。

monkeyrunner 工具与 UI/Application Exerciser Monkey(即 monkey 工具)无关。monkey 工具直接在设备或模拟器上的

monkeyrunner 工具为 Android 测试提供了以下独特功能:

多设备控制:monkeyrunner API 可以跨多个设备或模拟器应用一个或多个测试套件。您可以通过物理方式一次连接所有设备并/或启动所有模拟器,以编程方式依次连接到每个设备或模拟器,然后运行一个或多个测试。您也可通过编程方式启动模拟器配置,运行一个或多个测试,然后关闭模拟器。

功能测试:monkeyrunner 可以对 Android 应用运行完全自动化的测试。您可以通过模拟击键或轻触事件提供输入值,并以屏幕截图的形式查看结果。

回归测试 – monkeyrunner 可通过以下方法测试应用的稳定性:运行某个应用,然后将它的输出屏幕截图与一组已知正确的屏幕截图进行比较。

可扩展的自动化 – 由于 monkeyrunner 是一个 API 工具包,因此您可以开发一整套系统(包括基于 Python 的模块和用于控制 Android 设备的程序)。除了使用 monkeyrunner API 本身,您还可以使用标准 Python Android 调试桥。

此外,您也可以将自己的类添加到 monkeyrunner API 中。使用插件扩展 monkeyrunner 部分中对此进行了更详细的介绍。

monkeyrunun 工具使用 Jython,这是一种使用 Java 编程语言的 Python 实现。Jython 使 monkeyrunner API 能与 Android 框架轻松交互。借助 Jython,您可以使用 Python 语法访问 API 的常量、类和方法。

一个简单的 monkeyrunner 程序

下面介绍了一个简单的 monkeyrunner 程序,该程序会连接到一台设备,并创建一个 MonkeyDevice 对象安装 Android 应用软件包,运行其中一个 Activity,并向该 Activity 发送按键事件。然后,该程序会截取结果的屏幕截图,并创建一个 .png 文件。

# Imports the monkeyrunner modules used by this program

from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice

# Connects to the current device, returning a MonkeyDevice object

device = MonkeyRunner.waitForConnection()

# Installs the Android package. Notice that this method returns a boolean, so you can test

# to see if the installation worked.

device.installPackage(‘myproject/bin/MyApplication.apk’)

# sets a variable with the package’s internal name

package = ‘com.example.android.myapplication’

# sets a variable with the name of an Activity in the package

activity = ‘com.example.android.myapplication.MainActivity’

# sets the name of the component to start

runComponent = package + ‘/’ + activity

# Runs the component

device.startActivity(component=runComponent)

# Presses the Menu button

device.press(‘KEYCODE_MENU’, MonkeyDevice.DOWN_AND_UP)

# Takes a screenshot

result = device.takeSnapshot()

# Writes the screenshot to a file

result.writeToFile(‘myproject/shot1.png’,’png’)

monkeyrunner API

monkeyrunner API 包含在 com.android.monkeyrunner 软件包的三个模块中:

在 Python 程序中,您可以将每个类作为 Python 模块来使用。monkeyrunner 工具不会自动导入这些模块。要导入模块,请使用 Python from 语句:

from com.android.monkeyrunner import

其中 是要导入的类名称。您可以在同一个 from 语句中导入多个模块,只需用英文逗号分隔各模块名称即可。

运行 monkeyrunner

您既可以通过文件运行 monkeyrunner 程序,也可以在交互式会话中输入 monkeyrunner 语句。您可以通过调用 monkeyrunner 命令(位于 SDK 目录的 tools/ 子目录中)来执行这两项操作。如果您以参数的形式提供文件名,monkeyrunner 命令会将文件的内容作为 Python 程序运行;否则,它会启动一个交互式会话。

monkeyrunner 命令的语法为

monkeyrunner -plugin

表 1 对其中的标志和参数进行了说明。

表 1. monkeyrunner 标志和参数。

参数

说明

-plugin

(可选)指定包含 monkeyryrunner 插件的 .jar 文件。如需详细了解 monkeyrunner 插件,请参阅使用插件扩展 monkeyrunner。如需指定多个文件,请多次添加该参数。

如果您提供此参数,monkeyrunner 命令会将文件的内容作为 Python 程序运行。如果未提供此参数,该命令将启动交互式会话。

(可选)该程序在 中的标志和参数。

monkeyrunner 内置帮助

您可以通过运行以下命令为 monkeyrunner 生成 API 参考文档:

monkeyrunner help.py

参数如下:

为 text(对于纯文本输出)或 html(对于 HTML 输出)。

是输出文件的路径限定名称。

使用插件扩展 monkeyrunner

您可以使用以 Java 编程语言编写的类扩展 monkeyrunner API,并将其构建为一个或多个 .jar 文件。您可以借助此功能使用自己的类扩展 monkeyrunner API,或扩展现有的类。您还可以使用此功能初始化 monongxununner 环境。

如需为 monkeyrunner 提供插件,请在调用 monkeyrunner 命令时使用表 1 中所述的 -plugin 参数。

在插件代码中,您可以在 com.android.monkeyrunner 中导入和扩展 monkeyrunner 主类 MonkeyDevice、MonkeyImage 和 MonkeyRunner(请参阅 monkeyrunner API)。

请注意,插件不会授予您对 Android SDK 的访问权限。您无法导入 com.android.app 等软件包。这是因为 monkeyrunner 会与低于框架 API 级别的设备或模拟器交互。

插件启动类

插件的 .jar 文件可以指定在脚本处理开始之前实例化的类。如需指定此类,请将键 MonkeyRunnerStartupRunner 添加到 .jar 文件的清单中。该值应为启动时运行的类的名称。以下代码段展示了如何在 ant 构建脚本中执行此操作:

如需访问 monkeyrunner 的运行时环境,启动类可以实现 com.google.common.base.Predicate。例如,此类会在默认命名空间中设置一些变量:

Kotlin

package com.android.example

import com.google.common.base.Predicate

import org.python.util.PythonInterpreter

class Main: Predicate {

override fun apply(anInterpreter: PythonInterpreter): Boolean {

/*

* Examples of creating and initializing variables in the monkeyrunner environment’s

* namespace. During execution, the monkeyrunner program can refer to the variables

* “newtest” and “use_emulator”

*

*/

anInterpreter.set(“newtest”, “enabled”)

anInterpreter.set(“use_emulator”, 1)

return true

}

}Java

package com.android.example;

import com.google.common.base.Predicate;

import org.python.util.PythonInterpreter;

public class Main implements Predicate {

@Override

public boolean apply(PythonInterpreter anInterpreter) {

/*

* Examples of creating and initializing variables in the monkeyrunner environment’s

* namespace. During execution, the monkeyrunner program can refer to the variables “newtest”

* and “use_emulator”

*

*/

anInterpreter.set(“newtest”, “enabled”);

anInterpreter.set(“use_emulator”, 1);

return true;

}

}

今天的文章monkey and crocodile_monkey and crocodile分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:http://bianchenghao.cn/78838.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注