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