Я использую Espresso для проведения автоматического тестирования пользовательского интерфейса с помощью приложения для Android. (Я пытаюсь найти решение проблемы, пока дома с работы, поэтому у меня нет точных примеров и ошибок, но я могу обновить завтра утром). Я столкнулся с проблемой с модульными модульными кнопками в макете, которые несколько раз включаются в один пользовательский интерфейс. Ниже приведен краткий пример:
<include
android:id="@+id/include_one"
android:layout="@layout/boxes" />
<include
android:id="@+id/include_two"
android:layout="@layout/boxes" />
<include
android:id="@+id/include_three"
android:layout="@layout/boxes" />
Вот пример того, что находится внутри полей @layout/boxes:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/button1" />
<Button
android:id="@+id/button2" />
</RelativeLayout>
Кажется, я не могу получить доступ к кнопке один внутри include, я хочу "include_one", не обращаясь ко всем трем кнопкам.
Я попытался получить доступ к кнопкам со следующим:
onView(allOf(withId(R.id.include_one), isDescendantOfA(withId(R.id.button1)))).perform(click());
и
onView(allOf(withId(R.id.button1), hasParent(withId(R.id.include_one)))).perform(click());
Оба из которых я нашел из этого ответа: onChildView и hasSiblings с Espresso К сожалению, я не имел никакого успеха!
Я знаю, что это не здорово, но поскольку я не с моим рабочим компьютером, я не могу сказать вам точные ошибки, с которыми я столкнулся, но я столкнулся:
com.google.android.apps.common.testing.ui.espresso.AmbiguousViewMatcherException
также ошибка, сообщающая мне, что совпадений не найдено.
Код, который я использую, имеет смысл, хотя я новичок в использовании Espresso. Может ли кто-нибудь предложить какой-либо совет или указать, что я могу быть недопониманием?