我正在尝试使用Google 的 Espresso来实现这一点,但是我没有找到任何ViewAssertion
可以ViewAction
让我这样做的东西。
我不确定这些是否可以使用捆绑在匹配器中来完成,或者我应该自己编写。
谢谢!
我正在尝试使用Google 的 Espresso来实现这一点,但是我没有找到任何ViewAssertion
可以ViewAction
让我这样做的东西。
我不确定这些是否可以使用捆绑在匹配器中来完成,或者我应该自己编写。
谢谢!
尽管@denys 的答案乍一看似乎是正确的,但它似乎只适用于某些情况(正如Espresso 作者所建议的那样)。滚动到特定项目的正确方法是在android-test-kit-discuss论坛上回复这里,并在下面转载:
onData(instanceOf(Item.class))
.inAdapterView(allOf(withId(android.R.id.list), isDisplayed()))
.atPosition(9)
.check(matches(isDisplayed()));
它可能看起来像这样:
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())
如果你已经有了这个特定的号码,那么你已经做了这样的事情:
onData(is(instanceOf(yourClass.class)))
.inAdapterView(withId(R.id.some_list_view))
.atPosition(spicificNumber)
.perform(scrollTo());
如果 ListView 在具有特定编号的位置没有项目,这将失败。
编辑:
也看看这个例子 -浓缩咖啡样品。它将帮助您检查 spesificNumber 之后列表中是否没有更多项目。