robotium_robotium原理_robotium api(2)

电脑杂谈  发布时间:2017-03-14 21:03:03  来源:网络整理

先来简单地介绍下这个adb命令框架的常用接口。这个框架里有三个主要的包,分别介绍如下:

xuxu.autotest这个包里面主要有两个类,一个是AdbDevice,封装了功能测试中常用的一些操作,如获取当前activity的名称和包名、获取设备分辨率、关闭应用、点击对象等常用功能,非常实用。另一个类是XuImage,顾名思义,即封装了一些常见的图片操作,如得到指定边界的图片截图、对比图片是否一致、截取图片等。

xuxu.autotest.element这个包主要用于获取被测对象,主要是封装了一个Position对象,用于通过Class Name、Id、Contentdesc等属性来获取一个被测对象,其底层是通过uiautomator来dump 当前ui的xml文件的,可以获取到所有对象节点的xml文件。

xuxu.autotest.utils这个包里面主要提供了对Date日期时间的操作,ImageUtil对图片的操作及正则表达式和shell语句的操作的封装,方便大家的使用。总的来说整个框架的接口设计还是非常齐全的,可以实现很多常用功能,具体功能大家可以自己看源码和帮助文档来摸索。

接下来就进入我们本次的主题——跨进程。为了方便大家理解,我会在本文中选择两个非常常见的跨进程操作场景来说明如何跨进程,也就是大家喜闻乐见的相机拍照和打电话来进行演示。

例子1、跨进程操作之相机拍照。robotium

被测程序非常简单,程序界面截图如下图(2)所示:

图(2)

点击第一个界面的“拍照片”按钮后,进入界面2,点击其中的“拍张照片”后启动系统的相机,当用户按下拍照功能键后,系统可以将用户拍下的照片显示在应用中,以备后续浏览或者是上传。由于相机应用和我们所写的被测应用是两个不同的应用,所以这就属于典型的跨进程操作,Robotium框架本身是无法对这个相机界面进行操作的。

接下来看看关键的测试工程怎么创建的。测试工程的创建方法非常简单,操作步骤如下:

1. 首先按照常规的android测试工程的建法,创建一个常规测试工程。

2. 在工程中引入robotium和adbForAndroid的jar包。

这样,我们的测试工程就准备好了。

接下来的步骤就是写测试脚本。由于AdbForAndroid框架是按照元素的相关属性来查找并定位被测对象的,所以首先要弄清楚我们要操作的跨进程的界面上的对象的信息,这些信息我们可以通过很多现成工具来看,我这里选择android自带的uiautomatorviewer。先在模拟器上手工打开被测程序,进入拍照的相机界面,并用uiautomatorviewer查看界面元素信息如下图(3)所示:

图(3)

我们可以看到,我们要点击的拍照按钮的属性在图(3)的右下角的列表中已全部展现出来。那么我们该选哪个呢?这个问题取决于adbForAndroid框架支持由哪些属性来获取元素。通过查询其帮助文档,我们知道目前这个框架中常用的查找元素的方法如下:

findElementByContentdesc

findElementByClass

findElementByText

findElementById

由于我现在使用的模拟器版本为4.2.2,所以uiautomatorviewer无法显示id属性,如果大家用的是4.3版本以上,就可以看到元素的id属性了。

那么现在这种情况来看,我们最好就选择Contentdesc属性来定位对象了。代码很简单,如下:

Element element =position.findElementByContentdesc("Shutter button");

adbDevice.tap(element);  //点击拍照按钮


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-37530-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...