Robotium框架提供了获取、操作控件的API,如下图:
对于有id或者String的控件可以通过Robotium直接找到,但是对于弹出的Dialog上面的控件单纯的利用Robotium的API是行不通的,见下图场景:
对于上图中弹出的Dialog中仅仅对Set和Cancel按钮操作是可以的,但是要是操作+ – 按钮或者需要拿到EditText控件就需要费点心思了。
思路:主要是在弹出Dialog后通过Robotium的solo.getCurrentViews()方法得到Dialog上面的所有控件然后进行相关条件筛选。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
/** * 获得dialog上面的指定类型和位置的控件,在dialog弹出时调用 * @param solo * @param viewType View类型 * @param index view位置 * @return 返回dialog上面的指定类型和位置的控,不存在则返回null */ public static View getViewFromDialogByIndex(Solo solo, Class viewType , int index){ ArrayList dialogViews = solo.getCurrentViews(); ArrayList typeViews = new ArrayList(); for(View currentTypeView : dialogViews){ if(viewType.isInstance(currentTypeView)){ typeViews.add(currentTypeView); } } if(dialogViews.size()>0){ return typeViews.get(index); }else { return null; } } |
原文转自:http://www.robotium.cn/archives/346