在robotium中api中不提供使用id的方式。
如果我们想在robotium中使用id就需要自己通过id来找到控件的实例,然后通过robotium的api对实例进行操作来达到目的。
当然了。如果有童鞋有兴趣也可以自己将这个封装起来以便使用。
在说方法之前,我不得不先说说id的几种形式:
1.字符串形式。例如id/btn_Example我们在源码的布局里面写的,HierarchyView中看见的,都是这种。
2.数字形式。例如0x7f070012,我们可以打开R.java。里面就体现了String形式和int形式的对应关系。
在白盒测试中,我们可以直接使用R.id的形式来调用:
但是在黑盒测试中,R.id不可见,那么我们该如何使用呢?
这里是我自己封装的一个方法:
如果我们想在robotium中使用id就需要自己通过id来找到控件的实例,然后通过robotium的api对实例进行操作来达到目的。
当然了。如果有童鞋有兴趣也可以自己将这个封装起来以便使用。
在说方法之前,我不得不先说说id的几种形式:
1.字符串形式。例如id/btn_Example我们在源码的布局里面写的,HierarchyView中看见的,都是这种。
2.数字形式。例如0x7f070012,我们可以打开R.java。里面就体现了String形式和int形式的对应关系。
在白盒测试中,我们可以直接使用R.id的形式来调用:
1
2
|
View view=solo.getView(R.id.btn_Example);
//获取View
solo.clickOnView(view);
//点击
|
但是在黑盒测试中,R.id不可见,那么我们该如何使用呢?
1
2
3
4
|
Activity act=solo.getCurrentActivity();
//获取Activity
int
id=act.getResources().getIdentifier(
"btn_Example"
,
"id"
, act.getPackageName());
//通过String的id获取int的id
View view=act.findViewById(id);
//获取View
solo.clickOnView(view);
//点击
|
这里是我自己封装的一个方法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
private
boolean
clickById(String id)
throws
Exception{
if
(id==
""
){
return
false
;
}
try
{
Activity act=solo.getCurrentActivity();
//获取当前Activity
int
id=act.getResources().getIdentifier(id,
"id"
, solo.getCurrentActivity().getPackageName());
//获取id
View view=solo.getView(id);
//得到View
solo.clickOnView(view);
//点击
}
catch
(Exception ex){
Log.e(
"Exception"
, ex.getMessage());
throw
ex;
}
return
true
;
}
|