[Robotium]如何在GridVIew中滚动和点击item?
[Robotium]How to scroll and click on item in GridVIew?
我正在处理我的应用程序的测试用例,有 activity with tabs each tab has gridview in each gridView some checkboxs。
现在我尝试在第一个选项卡的 gridView 和 select 复选框中滚动,然后单击第二个选项卡并滚动,select 复选框是我的代码
GridView gridView = (GridView) solo.getView("truck_points");
int gvCount = gridView.getCount();
int nColumn = gridView.getNumColumns();
int currentChilds = gridView.getChildCount();
int numOfSelectedItems = randomItem(gvCount);
int r = 14;
int index = r%nColumn;
scrollListTo(gridView, r, getInstrumentation());
ViewGroup viewGroup = (ViewGroup) gridView.getChildAt(index);
CheckBox checkBox = (CheckBox) viewGroup.getChildAt(0);
solo.clickOnView(viewGroup);
Log.e(TAG,checkBox.getText() + " item: "+ r+", index: "+index+", column: "+ nColumn);
//Click on Post-Trip
solo.clickOnView(solo.getView(android.widget.TextView.class, 9));
solo.sleep(1000);
solo.clickOnView(solo.getView("start",1));
GridView gridView1 = (GridView) solo.getView("truck_points");
int gvCount1 = gridView1.getCount();
int nColumn1 = gridView1.getNumColumns();
int currentChilds1 = gridView1.getChildCount();
int numOfSelectedItems1 = randomItem(gvCount1);
int r1 = 17;
int index1 = r1%nColumn1;
scrollListTo(gridView1, r1,getInstrumentation());
ViewGroup viewGroup1 = (ViewGroup) gridView1.getChildAt(index1);
CheckBox checkBox1 = (CheckBox) viewGroup1.getChildAt(0);
solo.clickOnView(viewGroup1);
Log.e(TAG,checkBox1.getText() + " item: "+ r1+", index: "+index1+", column: "+ nColumn1);
solo.sleep(3000);
scrollListTo 方法:
public <T extends AbsListView> void scrollListTo(final T listView,
final int index, Instrumentation instrumentation) {
instrumentation.runOnMainSync(new Runnable() {
@Override
public void run() {
listView.setSelection(index);
}
});
instrumentation.waitForIdleSync();
}
现在在第一个选项卡中滚动并且 select 很好,日志输出:
10-05 22:41:50.786 1486-1517/? E/CheckTAG: Fifth Wheel item: 14, index: 2, column: 4
没错。
在选项卡二中它不滚动或 select 但在日志输出中查看正确的数据
10-05 22:41:56.106 1486-1517/? E/CheckTAG: Front Axle item: 17, index: 1, column: 4
有人可以帮忙吗?
我不知道为什么,但是当我替换它时它起作用了
GridView gridView1 = (GridView) solo.getView("truck_points");
来自
GridView gridView1 = (GridView) solo.getView("truck_points",1);
我正在处理我的应用程序的测试用例,有 activity with tabs each tab has gridview in each gridView some checkboxs。
现在我尝试在第一个选项卡的 gridView 和 select 复选框中滚动,然后单击第二个选项卡并滚动,select 复选框是我的代码
GridView gridView = (GridView) solo.getView("truck_points");
int gvCount = gridView.getCount();
int nColumn = gridView.getNumColumns();
int currentChilds = gridView.getChildCount();
int numOfSelectedItems = randomItem(gvCount);
int r = 14;
int index = r%nColumn;
scrollListTo(gridView, r, getInstrumentation());
ViewGroup viewGroup = (ViewGroup) gridView.getChildAt(index);
CheckBox checkBox = (CheckBox) viewGroup.getChildAt(0);
solo.clickOnView(viewGroup);
Log.e(TAG,checkBox.getText() + " item: "+ r+", index: "+index+", column: "+ nColumn);
//Click on Post-Trip
solo.clickOnView(solo.getView(android.widget.TextView.class, 9));
solo.sleep(1000);
solo.clickOnView(solo.getView("start",1));
GridView gridView1 = (GridView) solo.getView("truck_points");
int gvCount1 = gridView1.getCount();
int nColumn1 = gridView1.getNumColumns();
int currentChilds1 = gridView1.getChildCount();
int numOfSelectedItems1 = randomItem(gvCount1);
int r1 = 17;
int index1 = r1%nColumn1;
scrollListTo(gridView1, r1,getInstrumentation());
ViewGroup viewGroup1 = (ViewGroup) gridView1.getChildAt(index1);
CheckBox checkBox1 = (CheckBox) viewGroup1.getChildAt(0);
solo.clickOnView(viewGroup1);
Log.e(TAG,checkBox1.getText() + " item: "+ r1+", index: "+index1+", column: "+ nColumn1);
solo.sleep(3000);
scrollListTo 方法:
public <T extends AbsListView> void scrollListTo(final T listView,
final int index, Instrumentation instrumentation) {
instrumentation.runOnMainSync(new Runnable() {
@Override
public void run() {
listView.setSelection(index);
}
});
instrumentation.waitForIdleSync();
}
现在在第一个选项卡中滚动并且 select 很好,日志输出:
10-05 22:41:50.786 1486-1517/? E/CheckTAG: Fifth Wheel item: 14, index: 2, column: 4
没错。
在选项卡二中它不滚动或 select 但在日志输出中查看正确的数据
10-05 22:41:56.106 1486-1517/? E/CheckTAG: Front Axle item: 17, index: 1, column: 4
有人可以帮忙吗?
我不知道为什么,但是当我替换它时它起作用了
GridView gridView1 = (GridView) solo.getView("truck_points");
来自
GridView gridView1 = (GridView) solo.getView("truck_points",1);