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());
Другие вопросы по тегам