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的快照:
- 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方法就可以得到该控件的实例。
//找到搜索框,并输入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的可访问性。
版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/02/26/android-use-uiautomatiorviewer-to-obtain-controls/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论