robotium之listview与对话框

有两个重要的事情要注意关于 clickInList(int) 是不是很明显的方法: 第一,列表项是 1-建立索引,所以,请单击第一项的列表中,使用 clickInList(1) 不 clickInList(0) 。第二,单击这是相对的可见的项目,在屏幕上,那么clickInList(1) 将单击在列表上,不全面的第一项的第一个可见项。

对话框的动态处理的事宜,任意的弹出窗口不是真正的 Robotium 什么意思来处理。应该要测试与已知的、 可控的、 可重复条件下的应用程序的用户交互。如果发生意外在测试,例如失去连接,它应被视为失败 ;有您的测试不能运行,以完成反正好机会。作为一个出租司机的变通,您可以检查存在之前的事件,每个对话框的类似:

if(solo.searchText("Dialog text") {
    //handle closing dialog
}

不过,我会建议针对这一点,它很大,会减慢您的测试,再次,即使您关闭该对话框,这一事实错误发生在第一次的地方可能会导致部分测试将失败的后面。



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

点击一个给定的列表行并返回此行显示的TextView集合,默认操作第一个ListView。
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;
		}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值