Robotium学习之点击没有ID的控件如何实现
---恢复内容开始---
其实这篇文章写起来听费劲的,毕竟我自己也是刚刚解决这个问题。。理解可能还是不太够,想说却也不知道从哪里说起比较好。
UI自动化测试,我是以monkeyrunner入门的,这个工具,说实话入门真的很容易,sdk自带工具,环境不用花时间配置;脚本语言Python就我现在的理解看来也是一门非常实用并且简单的语言。但是原生的monkeyrunner几乎不能做任何复杂的事情,而大神们写的一些插件,也因为资料太少始终无法做的很好。所以怀着很复杂的心情,我放弃了monkeyrunner的继续深入,至于为什么很复杂却也不足与外人道。
Robotium很强大。这是我使用Robotium以来第一次有这种感觉,在使用它之前,很多人说他好用,但是我一次都没有感受到它比monkeyrunner厉害的地方直到今天。让我感觉强大的地方就是今天的主题了,如何实现无ID控件的点击——比monkeyrunner强大太多了。
这里先感谢CSDN的芳菲莹莹,看了她的博客之后才解决问题的。博客地址:http://blog.csdn.net/eleven521/article/details/16359001有兴趣的朋友可以去看一看。
接下来是正题,我知道大部分朋友还是希望直接知道怎么用就好了,先把代码贴出来吧
1 View gridview = solo.getView(R.id.calendarGridView); 2 ArrayList<View> childview = solo.getCurrentViews(View.class, gridview); 3 solo.sleep(1000); 4 solo.clickOnView(childview.get(6));
这是一个类似于日历的GridView控件,GridView的id是R.id.calendarGridView
第一行代码是将这个GridView强行的转成View类型,因为getCurrentViews里面的参数需要时View类型的
第二行代码是将GridView中的所有子View放进一个名为View的数组里面。
核心代码就是这两行。非常的简单,但是却花费了我两天的时间才找到方法。主要是因为资料实在是太少了,每每到了这种找不到资料,焦头烂额的情况下,总是会觉得分享真的是一种美德,同时也更感觉到了学习开发知识的重要性,目的不是成为一个好的厨师,而是成为一个美食家。
当然,这种办法肯定是有缺陷的,毕竟,作为一个仅仅看了Robotium十天不到的新人,不可能写出很完美的测试代码。
我暂时发现的问题就出在第四行代码上面——这是一个点击第一天的代码。solo.clickOnView(childview.get(6))。为什么是6呢?确实,我在向程序员同事的时候请教的时候,他们说1号如果是礼拜五,那么第一行的礼拜天到礼拜四都是没有填View进GridView中的,所以说点击第一天的代码理论上来说应该是solo.clickOnView(childview.get(1)),但是在我实际使用过程中发现应该是每个空白都被填进了View。暂时是没有明白究竟是我这个代码有问题(这个应该不太可能),还是说代码中其实是添加了空白的View。。如果有知道的朋友,希望可以告诉一声。
分享,真的是一种美德!