Resource_id和文本都相同的多个TextView定位问题

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

Resource_id和文本都相同的多个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);

第一个“顶”是第10TextView,这个需要通过定位和尝试才能得知是第几个!

此方法的优缺点:

优点:可以通过index定位View中的所有TextView,而且不受resouce_idTextView上面显示内容的影响。

缺点:此方法相当于相对定位,如果页面有变化,在要定位的元素前增加或是减少了TextView,当定位就失败了!

----夫英雄者,胸怀大志,腹有良谋,有包藏宇宙之机,吞吐天地之志者也。
原文地址:https://www.cnblogs.com/eagleking0318/p/6520945.html