Android自动化测试—操作对话框(Dialog)上面的控件

发表于:2013-05-07来源:Robotium作者:hao.shen点击数: 标签:Android
Robotium框架提供了获取、操作控件的API,如下图:

  Robotium框架提供了获取、操作控件的API,如下图:

20130403144739

  对于有id或者String的控件可以通过Robotium直接找到,但是对于弹出的Dialog上面的控件单纯的利用Robotium的API是行不通的,见下图场景:

device-2013-04-03-150801

  对于上图中弹出的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