我有一个回收站视图,其中应包含3个不明顺序的物品。
我知道如何按位置获取回收物品以及如何检查文字
onView(withId(...)).check(matches(atPosition(0, hasDescendant(withText(A)))));
但是我不知道该怎么说withText(A)
或 withText(B)
我用Google搜索,但看不到OR hamcrest Matcher之类的东西
答案 0 :(得分:1)
您可以使用Matchers.anyOf()
。例如:
onView(anyOf(withText("X"), withText("Y"))).check(matches(isDisplayed()))
答案 1 :(得分:1)
创建自己的自定义matcher
:
class MultiTextMatcher extends BoundedMatcher<View, TextView> {
static MultiTextMatcher withTexts(String[] texts) {
return new MultiTextMatcher(texts);
}
private final String[] texts;
private MultiTextMatcher(String[] texts) {
super(TextView.class);
this.texts = texts;
}
@Override protected boolean matchesSafely(TextView item) {
for(String text: texts) {
if(item.getText().toString().equals(text)) {
return true;
}
}
return false;
}
@Override public void describeTo(Description description) {
description.appendText("with texts:").appendValue(texts.toString());
}
}
然后,只需应用您的自定义matcher
,如下所示:
onView(withId(...)).check(matches(atPosition(0, hasDescendant(withTexts({"A", "B"})))));