2016-06-10 2 views
1

У меня есть ExpandableListView, и я хотел бы click() один из его детей.Espresso - Почему Espresso находит этот матч неоднозначным?

Я пробовал НАГРУЗКИ разными способами, но я просто не могу понять, как работает эспрессо.

Например, почему этот код не работает?

onData(withId(R.id.execexpList)).onChildView(is(withId(200))).perform(click()) 

По какой-то причине божественного, она возвращает «неоднозначное соответствие» к моему ExpandableLIstView и другой ListView шахты, но они имеют разные идентификаторы.

Может ли кто-нибудь помочь мне?

+0

Не следует ли 'withId' брать' R.id'? –

+0

@JaredBurrows Я установил каждую строку в моем 'ExpandableListView' определенному идентификатору. Так вот почему я жестко запрограммировал его – RafaelC

+0

Вы использовали 'setId' в представлении? Сначала попробуйте 'withId (is (int))'. См. Https://developer.android.com/reference/android/support/test/espresso/matcher/ViewMatchers.html#withId(int). Если это не работает, попробуйте 'setTag'. Затем используйте https://developer.android.com/reference/android/support/test/espresso/matcher/ViewMatchers.html#withTagKey (int). –

ответ

1

onData() Используется для соответствия элементам внутри адаптера ListView, а не фактическому виду.

onChildView() Используется для соответствия потоку элемента ListView, который сопоставляется в onData().

Если у вас есть несколько адаптеров в иерархии, вместо этого вы должны использовать inAdapterView(Matcher<View>viewMatcher).

API guideonData() описание товара более подробно.