Android使用uiautomatorviewer获取控件

初探

在Android的SDk提供了以下的工具来支持我们进行UI自动化测试:

  • uiautomatorviewer:用来扫描和分析Android应用程序的UI控件的工具
  • uiautomator:一个包含创建测试、执行自动化测试API的java库

谷歌Uiautomator文档:http://android.toolib.net/tools/help/uiautomator/index.html

要使用这些工具,必须安装Android开发工具以下版本:

  • Android SDK Tools:API 21 及以上版本
  • Android SDK Platform:API 16 及以上版本

分析控件

在开始写测试用例之前,使用uiautomatorviewer可以帮助熟悉UI组件(包括视图和控件)。

可以使用uiautomatorviewer对当前连接到电脑上的手机屏幕进行一个快照,然后可以看到手机当前页面的层级关系和每个控件的属性。利用这些信息,可以写出针对特定UI控件的测试用例。

在 ..\sdk\tools\ 目录下打开 uiautomatorviewer.bat (打开前请手机连接电脑,手机开启USB调试)。

在手机上打开显示需要获取UI控件的界面,这里以小米计算器为例,然后点击uiautomatorviewer左上角的Device Screenshot (uiautomator dump)获取屏幕UI的快照:

Android使用uiautomatorviewer获取控件

  • 1、获取快照

当你要分析一个页面时,首先将手机的页面停留在你要分析的页面,然后用数据线连接电脑。

然后点击uiautomatorviewer左上角的第二个图标按钮Device Screenshot (uiautomator dump),获取或更新当前屏幕UI快照。

  • 2、页面层级

右上方的整个区域,就是当前页面布局的层级关系。如果对Android五大布局比较熟悉的话,理解这一层应该不是问题。

  • 3、不可用区域

右上方整个区域中的第二个按钮Toggle NAF Nodes,按下后出现的黄色区域代表,这些控件是不被Uiautomator工具识别,无法获取到这些控件的实例。

  • 4、属性详情

右下方的整个区域,是当前选中的页面或者是控件的属性信息。UI自动化测试就是需要通过查看属性中的控件的id或者是text等来获取控件的实例,然后执行点击操作。

以百度搜索APP为例,我们可以得知搜索框的resource-id是com.baidu.searchbox:id/baidu_searchbox。然后利用Uiautomator的API方法就可以得到该控件的实例。

1
2
3
//找到搜索框,并输入lazyTest
WebElement searchBtn = driver.findElement(By.id("com.baidu.searchbox:id/baidu_searchbox"));
searchBtn.sendKeys("lazyTest");

上述方法就是知道该控件的id之后,模拟向该控件输入文本的过程,当然Uiautomator还提供了根据text来获取控件。

这种点击的方法比起Monkeyrunner来说它的好处就是:Monkeyrunner是坐标点击,当一个脚本写好后,换一个分辨率的手机去执行,点击的位置可能就会出错,而Uiautomator点击是先找到该控件,然后再点击该控件,因此可移植性比Monkeyrunner要好,另外代码的易读性也更好一些。

  • 5、点击保存按钮,可保存相关的两个文件(截图和dump文件),下次可直接打开此文件继续查看。

说明及注意

1、点击右侧上方的黄三角按钮(Toggle NAF Nodes)来查看不能被uiautomator测试工具访问到的控件。这些控件只设置了有限的属性,所以导致uiautomator无法获取到这些控件。所以你可能很难测试这些控件。这种情况下可以要求开发者为这些控件添加必要的属性,比如ImageView或者ImageButton应该添加android:contentDescription属性。

2、由于uiautomator 工具依赖Android设备的可访问性来获取UI控件,要支持uiautomator 工具需要以下条件:

  • 使用android:contentDescription属性给 ImageButton, ImageView, CheckBox和其他控件设置标签。
  • 使用android:hint属性来标记EditText控件,而不是使用里面的文本(文本内容用户是可以修改的)。
  • 对于用来提供操作视觉反馈的UI(文本或者图标),都添加一个android:hint属性来识别。确保所有用户可操作的界面元素都可以通过方向控制键选中(例如轨迹球)。
  • 通过uiautomatorviewer工具来确保所有的UI元素都可以被测试工具访问到。还可以通过“辅助功能”(在设置界面)中的“TalkBack”等服务来测试UI的可访问性。

Powered by AppBlog.CN     浙ICP备14037229号

Copyright © 2012 - 2020 APP开发技术博客 All Rights Reserved.

访客数 : | 访问量 :