我可以使用复选框的位置选择列表视图中的特定复选框。但是我想选中一个关于它旁边文本的复选框。 例如,存在具有复选框的杂货的列表视图,并且我想选择具有"牙膏的复选框"在它的旁边。我们如何做到这一点??
答案 0 :(得分:3)
我的项目遇到了类似的问题(查看屏幕截图):
我创建了一个自定义匹配器,它匹配显示在其中的字符串的行列表(我只有一行带有TextView,一个ImageVIew和CheckBox)。
private Matcher<View> isRoleChecked() {
return new BoundedMatcher<View, TextView>(TextView.class) {
@Override
public void describeTo(Description description) {
description.appendText("a whatever description");
}
@Override
protected boolean matchesSafely(TextView view) {
ConstraintLayout constraintLayout = (ConstraintLayout) view.getParent();
CheckBox aCheck = constraintLayout.findViewById(R.id.myCheckbox);
return aCheck.isChecked();
}
};
}
魔术发生在matchesSafely(TextView view)
方法中,您可以“捕捉”复选框所在的布局。之后,您可以使用复选框执行任何操作。您可以将其设置为选中 - &gt; aCheck.setChecked(true);
但从自动化测试的角度来看,这不是一个好的选择,因为你想要执行点击。
如果是这样,您可以使用:
onView(withText("class number 0")).check(matches(isRoleChecked())).perform(click());
显然,您需要根据需要重新编写代码。希望这会有所帮助。