Android Espresso ListView щелкните элемент
Я имею ListView
с картинками и текстом. Когда я пытаюсь щелкнуть пункт, я получаю сообщение об ошибке
android.support.test.espresso.AmbiguousViewMatcherException: 'with id: com.cifrasoft.telefm:id/cardsGridView' matches multiple views in the hierarchy.
Problem views are marked with '****MATCHES****' below.
Я использую следующий код:
onData(hasToString(startsWith("Item Text")))
.inAdapterView(withId(R.id.cardsGridView))
.perform(click());
Могу ли я нажать ListView
используя положение Adapter
без спичек или startWith
?
1 ответ
Попробуйте с atPosition(). например
onData(hasToString(startsWith("Item Text")))
.inAdapterView(withId(R.id.cardsGridView)).atPosition(0)
.perform(click());
с индексом 0 он нажмет на первое найденное совпадение.
Используйте Record Test для получения ViewInteraction списка, затем получите представление и используйте performItemClick следующим образом:
AtomicReference<ListView> resultView = new AtomicReference<>(null);
ViewInteraction viewInteraction1 = onView( ... withId(R.id.my_list_id), ...);
viewInteraction1.check(((view, noViewFoundException) -> {
if(noViewFoundException != null){
return;
}
resultView.set((ListView) view);
}));
if(resultView.get() != null){
ListView listView = resultView.get();
activity.runOnUiThread(()->{
listView.performItemClick(
listView.getAdapter().getView(index, null,null),
index,
listView.getAdapter().getItemId(index));
});
}
Попробуй это:
onView(withText("ListItemText")).perform(ViewActions.click());