在Robotium写自动化的过程中,会遇到这样的情况,在一个屏幕显示页中,有多个TextView的resource_id是相同的,而且显示的Text也是变化的(如下图的“顶”),这种情况就没有办法用clickontext()函数来对其进行操作,而且还要验证操作后的结果,这时必须对TextView进行定位。

我在网上查找了很多网站,并经过尝试,发现用getview方法可行,先定位到TextView,然后再用index标识是哪儿个TextView。例如:
//顶操作
//1,获取现有的顶数
view2=(TextView)solo.getView(TextView.class,10);
content=view2.getText().toString();
num=Integer.parseInt(content.substring(1,
content.length()));
//2,顶操作,然后判断数量是否加1?
view1=solo.getView(TextView.class,10);
solo.clickOnView(view1);
solo.sleep(3000);
view2=(TextView)solo.getView(TextView.class,10);
assertEquals("顶"+(num+1),view2.getText());
代码详解:
我们要验证顶操作,首先要获取操作前现在的顶数量,然后再进行顶操作,最后要验证顶数是否加1~!
获取TextView的方法是:view1=solo.getView(TextView.class,10);
第一个“顶”是第10个TextView,这个需要通过定位和尝试才能得知是第几个!
此方法的优缺点:
优点:可以通过index定位View中的所有TextView,而且不受resouce_id和TextView上面显示内容的影响。
缺点:此方法相当于相对定位,如果页面有变化,在要定位的元素前增加或是减少了TextView,当定位就失败了!