使用Espresso单击ListView中的特定复选框

时间:2016-02-14 17:57:30

标签: android listview testing android-espresso

我有一个ListView,每行都有一个复选框:

enter image description here

现在我想点击第4行的复选框。我有每行的数据模型,因此我可以轻松地使用onData()选择具有给定数据的行。但是,如何点击该行中的复选框?

2 个答案:

答案 0 :(得分:1)

经过一番研究后,我找到了DataInteraction.atPosition()DataInteraction.onChildView()。例如,我可以做

onData(instanceOf(BaseballCard.class))
            .atPosition(4)
            .onChildView(withId(R.id.checkmark))
            .perform(click());

答案 1 :(得分:1)

如果您的行布局允许单击该行来设置CheckBox,您可以使用它来单击ListView行:

onData(anything()).atPosition(4).perform(click());

否则,您可以直接点击CheckBox而不知道其ID:

onData(anything())
   .atPosition(4)
   .onChildView(withClassName(Matchers.containsString("CheckBox")))
   .perform(click());

然后您可以断言CheckBox已被选中:

onData(anything())
   .atPosition(4)
   .onChildView(withClassName(Matchers.containsString("CheckBox")))
   .check(matches(isChecked()));

更多信息:https://github.com/shohrabuddin/Espresso