我正在尝试使用Google's Espresso来实现此功能,但是我找不到允许我这样做的ViewAssertion
或ViewAction
。
我不确定这些是否可以使用捆绑在匹配器中完成,或者我应该自己编写。
谢谢!
答案 0 :(得分:6)
即使@denys的答案乍一看似乎是正确的,但它看起来只适用于某些情况(如Espresso author所示)。滚动到特定项目的正确方法在android-test-kit-discuss论坛上回复,并在下面转载:
onData(instanceOf(Item.class))
.inAdapterView(allOf(withId(android.R.id.list), isDisplayed()))
.atPosition(9)
.check(matches(isDisplayed()));
答案 1 :(得分:1)
看起来像这样:
<强> 1。找到listView中的元素数量并将其保存在某个变量中:
final int[] counts = new int[1];
onView(withId(R.id.some_list_view)).check(matches(new TypeSafeMatcher<View>() {
@Override
public boolean matchesSafely(View view) {
ListView listView = (ListView) view;
counts[0] = listView.getCount();
return true;
}
@Override
public void describeTo(Description description) {
}
}));
<强> 2。然后,知道listView中的元素数量,您可以滚动到范围内的任何元素。
onData(anything()).inAdapterView(R.id.some_list_view).getPosition(<item_index>).perform(scrollTo())
答案 2 :(得分:0)
如果您已经拥有此特定号码,那么您可以执行以下操作:
onData(is(instanceOf(yourClass.class)))
.inAdapterView(withId(R.id.some_list_view))
.atPosition(spicificNumber)
.perform(scrollTo());
如果ListView在具有specificNumber的位置没有项目,则会失败。
编辑:
另请参阅此示例 - Espresso samples。它将帮助您检查spesificNumber之后列表中是否没有其他项目。