在robotium的测试的时候有时候我们需要获取一些控件的值,但是因为各种原因我们可能会找不到这个控件,这个时候可以根据这个页面某一个固定的text内容不变的节点去索引出来我们需要获取的节点。
记录方法如下:
public String GetWidgetValue(String string) {
solo.sleep(2000);
ArrayList<TextView> list = findTextViewByText(string, true);
Log.d(TAG, "Find Text view by :" + list);
RelativeLayout relativeLayout = (RelativeLayout) list.get(0)
.getParent().getParent();
RelativeLayout Value = (RelativeLayout) relativeLayout.getChildAt(1);
TextView ToneValue = (TextView) Value.getChildAt(1);
String OutPutValue = ToneValue.getText().toString();
return OutPutValue;
}
public ArrayList<TextView> findTextViewByText(String name, boolean isExact) {
ArrayList<TextView> array = new ArrayList<TextView>();
ArrayList<TextView> arrayList = solo.getCurrentViews(TextView.class);
for (int i = 0; i < arrayList.size(); i++) {
String text = arrayList.get(i).getText().toString();
if (isExact) {
if (text.equals(name)) {
array.add(arrayList.get(i));
}
} else {
if (text.contains(name)) {
array.add(arrayList.get(i));
}
}
}
if (array.size() == 0) {
return null;
} else {
return array;
}
}