七、其他 Robotium 工具
本章由机器人框架中的各种实用程序组成。这些实用程序包括RobotiumUtils
类、XPath 用法、已经安装的 Android 应用的 Robotium 用法,以及执行测试的应用签名-取消签名操作过程中涉及的签名过程。让我们在本章中逐一查看这些实用程序。
机器人应用类
RobotiumUtils
类在机器人版本 4.2 中引入。它包含实用方法。让我们看看为类RobotiumUtils
设置的 API。
API 集
RobotiumUtils
类提供了排序、排序、过滤视图等方法。提供这些功能的不同方法如下:
-
以下方法基于作为参数传递的类过滤视图:
java RobotiumUtils.filterViews(Class classToFilterBy, Iterable viewList)
-
以下方法过滤所有不在
classSet
参数中的视图:java RobotiumUtils.filterViewsToSet(Class<android.view.View>[] classSet, Iterable<android.view.View> viewList)
-
以下方法检查视图是否与
stringToMatch
变量匹配,并返回找到的匹配数:java RobotiumUtils.getNumberOfMatches(String stringToMatch, TextView targetTextView, Set<TextView> textviewList)
-
以下方法删除所有可见性不可见的视图:
java RobotiumUtils.removeInvisibleViews(Iterable viewList)
-
以下方法根据视图在屏幕上的位置对所有视图进行排序:
java RobotiumUtils.sortViewsByLocationOnScreen(List viewList)
-
下面的方法筛选视图集合,并返回与指定正则表达式匹配的视图。
java RobotiumUtils.filterViewsByText(Iterable viewList, string regex)
注
您可以从以下链接获得有关这些方法的更多信息:
http://robotics . Google code . com/SVN/doc/com/jaywy/Android/robotics/solo/roboumstyle . html
XPath API 和语法
通过使用 XPath 样式的表达式,可以定位网页元素。这有助于测试人员找到 DOM 的元素,同时保持测试抵抗应用用户界面。请注意,这仅适用于网络视图应用中的网络元素。
XPath 基本上用于在 XML 文档中导航属性和元素。一个简单的路径表达式可以用来使用 XPath 在 XML 文档中导航。
让我们看一个简单的例子,它提供了对如何使用 XPath 的基本理解:
下面是我们必须使用 XPath 解析的 XML 文件:
<?xml version="1.0"?>
<catalog>
<book id="z24">
<author>Hrushikesh</author>
<title>Robotium Automated Testing For Android</title>
<genre>Computer</genre>
<description>Efficiently automate test cases for Android applications using Robotium </description>
</book>
<book id="az24">
<author>Bharati</author>
<title>Mathematics MHTCET</title>
<genre>Objective</genre>
<description>A comprehensive guide to Mathematics for MHTCET</description>
</book>
</catalog>
假设您想从前一个 XML 文件中提取作者的名字。使用 XPath 的功能如下:
private void parseDataUsingXPath() {
// create an InputSource object from /res/xml
InputSource inputSrc = new InputSource(getResources().openRawResource(R.xml.data));
// Instantiate the XPath Parser instance
XPath xPath = XPathFactory.newInstance().newXPath();
// Create the xpath expression
String xPathExpression = "//author";
// list of nodes queried
NodeList nodes = (NodeList)xpath.evaluate(expression, inputSrc, XPathConstants.NODESET);
// if author node found, then add to authorList i.e. the list of authors instantiated in the activity where this function is used
if(nodes != null && nodes.getLength() > 0) {
int len = nodes.getLength();
for(int i = 0; i < len; ++i) {
Node node = nodes.item(i);
authorList.add(node.getTextContent());
}
}
}
您可以使用以下 XPath 表达式示例来查找网页元素:
solo.getWebElement(By.xpath("//*[@id='nameOfelementID']/tbody/tr[11]/td[2]/input[1]"), 0);
where By.xpath(<path expression>, index);
用于预装应用的机器人
Robotium 允许为安卓系统中预先安装的应用编写和运行测试用例。为此,您需要使用用于测试项目的调试密钥对目标应用执行重新签名操作。这需要访问设备上的/system/app
文件夹。要访问此文件夹,您必须有根设备。
注
请注意,执行重新签名操作的某些预安装应用无法正常工作。当使用新的调试密钥重新签名时,这些应用甚至不会出现。
要重新签署 APK 文件,您可以按照下列步骤操作:
- 以 root 用户身份登录:
adb root
。 -
使用以下代码
java adb remount adb pull /system/app/ApplicationName.apk
重新安装 3. 重新签署
ApplicationName.apk
文件,使其具有与adb pull /data/system/packages.xml
测试项目相同的证书调试密钥签名签署。 4. 打开packages.xml
并删除以下代码:java <package name="com.ApplicationName"> ..... </package>
-
将
packages.xml
推回adb push packages.xml /data/system
装置。 - 重新启动您的设备。
- 将重新签署的
ApplicationName.apk
文件推回到adb push ApplicationName.apk /system/app
设备。
仅测试 APK
待测试的 APK 文件应具有与测试项目相同的证书签名。如果签名不同,就会出现不匹配。
- 如果您知道 APK 证书签名,请用相同的签名在测试项目上签名。
- 如果 APK 没有签名,用安卓调试密钥签名在 APK 签名。
- 如果您不知道 APK 证书签名,请删除它的证书签名,并将调试密钥签名提供给 APK 和您的测试项目。
签名流程
在安卓操作系统中,所有的应用都用证书签名,证书的私钥由应用开发者持有。
有两种构建模式来构建您的安卓应用。它们如下:
- 调试方式
- 释放模式
安卓构建过程根据构建模式的类型对应用进行签名。调试模式主要用于开发和测试应用,而发布模式用于向用户分发应用的发布版本,或者在市场上发布应用,如 【谷歌 Play 商店】。
当您使用构建模式时,Keytool
实用程序用于创建调试密钥。调试密钥的别名和密码对于 SDK 构建工具是已知的。这就是为什么每次编译程序时,工具不会提示您输入调试密钥的别名和密码。
当您在发布模式下构建应用时,将使用私钥。如果您没有私钥,则Keytool
实用程序会为您创建一个。当您的应用在发布模式下编译时,构建工具使用您的私钥以及jarsigner
实用程序来签署应用 APK 文件。
每当您在安装了 ADT 插件的情况下使用 Eclipse 调试或运行应用时,调试密钥签名过程都会在后台自动进行。当使用启用了调试选项的 Ant 脚本来构建应用时,也会遵循相同的签名过程。 Eclipse 导出向导有助于自动化发布签名过程,或者修改 Ant 构建脚本和使用发布选项构建应用。
要取消签名 APK 然后用调试密钥签名,请执行以下步骤:
- 使用任何 zip 解压缩器解压缩 APK 文件。
- 删除
Meta-INF
文件夹。 - 将提取的文件重分类为 APK 文件,并将扩展名从
appname.apk.zip
更改为appname.apk
。这样,你就可以取消签署 APK! -
要使用安卓调试签名密钥对这个 APK 进行签名,请在命令提示符下运行以下命令:
```java
jarsigner -keystore ~/.android/debug.keystore -storepass android -keypass android appname.apk androiddebugkey
zipalign 4 appname.apk tempappname.apk ```
jarsigner
实用程序可以在 JDK 二进制文件下找到,而 zipalign 是安卓软件开发工具包的一部分。
zipalign 工具用于优化安卓 APK 文件。其基本目的是使未压缩的数据相对于文件的开头对齐。
在 Eclipse 的帮助下,您还可以签署和导出您的安卓应用。请执行以下步骤:
- 右键点击安卓项目,导航至安卓工具 | 导出签名应用包。
- 在导出安卓应用向导中,选择想要导出的项目,然后点击下一步。
- 将出现密钥库选择屏幕。
- 如果您没有现有的密钥库,请创建一个新的密钥库。您应该能够通过输入位置和密码来创建密钥库。
- 导航到您要使用的文件夹后,在文件浏览窗口的文件名:字段中键入一个名称,例如
hrushikesh.keystore
。然后,您应该能够继续创建密钥。
关于 APK 签约的更多信息,请参考以下链接:
http://developer . Android . com/tools/publishing/app-signing . html
总结
在本章中,您了解了机器人框架中存在的不同实用程序及其用法。在下一章中,我们将看到 Robotium 与 Maven 的集成机制,并提供一些示例。
版权属于:月萌API www.moonapi.com,转载请注明出处