企业如何利用HarmonyOS开发工具提升小程序开发效率与合规性
644
2022-10-04
使用UI Automator对ListView,RecycleView,GridView进行遍历
编者:李国帅
时间:2020/7/20
背景:
程序写完总要进行测试,android程序也不例外。UI Automator就是这么一款给开发者使用的测试工具。
UI Automator
UI Automator 是一个界面测试框架,适用于整个系统上以及多个已安装应用间的跨应用功能界面测试。
UI Automator 测试框架提供了一组 API,用于构建在用户应用和系统应用上执行交互的界面测试。UI Automator 测试框架非常适合编写黑盒式自动化测试,此类测试的测试代码不依赖于目标应用的内部实现细节。
虽然说是黑盒测试,但是还是需要一定的编程基础才能编写测试代码。
首先需要使用UI Automator 查看器或者android studio的Layout inspector来扫描和分析 Android 设备上当前显示的界面组件。使用工具来检查布局层次结构并查看设备前台显示的界面组件的属性,然后根据这些信息来组织测试代码。
步骤:
在antomaterui中对进行列表ListView,RecycleView,GridView的遍历,并没有什么区别。
antomaterui2只是对antomaterui1进行了优化,多了一些更炫,更简化的使用方法,对列表遍历没有什么区别。
首先找出要遍历的列表的父类是什么,比如如果你使用XRecycleView,那就使用android.support.v7.widget.RecyclerView做遍历容器。
为什么呢?测试发现UiAutomator只能识别anrdoid.jar中的类型,比如ListView,RecycleView,GridView,不能使用自定义类型。
然后定义选择器,获取滚动集合,一行行的遍历即可。下面是我使用的测试例子,把它提取出来。
GridView:
public static void testGridView() { //查询基于GridView的网格控件 UiSelector uiSelGridView = new UiSelector().className("android.widget.GridView");// 列表选择器 UiSelector uiSelGridItem = new UiSelector().className("android.widget.RelativeLayout");//列表中的行选择器 // 主窗口模块 UiSelector uiSelGridText = new UiSelector().className("android.widget.TextView") .resourceId(ViewUtils.RESID + "/tvName");// 列表中的子项 UiScrollable listOperate = new UiScrollable(uiSelGridView);//滚动集合对象 try { int countOperate = listOperate.getChildCount();//行数量 for (int j = 0; j < countOperate; j++) {//遍历所有的Grid Item UiObject operate = listOperate.getChildByInstance(uiSelGridItem, j); UiObject textObj = operate.getChild(uiSelGridText); Globals.printLog("ua2", "operate " + j + " name=" + textObj.getText()); if (textObj.getText().equalsIgnoreCase("查看")) { ViewUtils.viewClick(operate, 1);// //打开 } } } catch (UiObjectNotFoundException e) {// Exception Globals.printErr(e, "testTalk startVisit"); } }
ListView
RecyclerView
可以看到它们实际上大同小异:
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~