Я пытаюсь щелкнуть по элементу списка, используя эспрессо, но безуспешно.
Я перепробовал все, что есть в stackOverflow
onData(anything()).inAdapterView(withId(R.id.more_menu_list)).atPosition(0).
onChildView(withId(R.id.mm_item_text)).
check(matches(withText("Log in")))
.perform(click());
onView(allOf(is(instanceOf(MenuListAdapter.class)), hasSibling(withText("Log in")))).perform(click());
onData(allOf(is(instanceOf(MenuListAdapter.class)), hasEntry(equalTo("STR"), is("Log in"))))
.perform(click());
onData(anything()).inAdapterView(withContentDescription("Log in")).atPosition(0).perform(click());
onData(hasToString(startsWith("Promotions")))
.inAdapterView(withId(R.id.more_menu_list)).atPosition(0)
.perform(click());
onData(hasEntry(equalTo(MenuListAdapter.class),is("Log out")))
.onChildView(withId(R.id.more_menu_list));
onView(withId(R.id.mm_item_text)).check(matches(withText("Log in")));
I also tried to create a custom matcher
public static Matcher<Object> withItemValue(final String value) {
return new BoundedMatcher<Object, ExtraMenu>(ExtraMenu.class) {
@Override
protected boolean matchesSafely(ExtraMenu item) {
return item.getText().toUpperCase().equals(String.valueOf(value));
}
@Override
public void describeTo(Description description) {
description.appendText("has value " + value);
}
};
}
используется как:
onData(withItemValue("Promotions")).inAdapterView(withId(R.id.more_menu_list)).perform(click());
В большинстве случаев я получаю эту ошибку. Есть меню из 5 пунктов
Вызвано: java.lang.RuntimeException: данные не найдены, соответствующие: имеет значение Акции содержали значения: <[Data: 0 (class: java.lang.Integer) токен: 0, Data: 1 (class: java.lang.Integer) токен: 1, данные: 2 (класс: java.lang.Integer) токен: 2, данные: 3 (класс: java.lang.Integer) токен: 3, данные: 4 (класс: java.lang.Integer) токен: 4]>