gpt4 book ai didi

java - 如何使用 espresso 根据项目文本从 ListView 中单击项目?

转载 作者:太空宇宙 更新时间:2023-11-04 09:37:31 24 4
gpt4 key购买 nike

我尝试使用 Espresso 单击 ListView 项,但没有成功。

我尝试了 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:找不到匹配的数据:具有值促销包含的值:<[数据:0(类:java.lang.Integer) token :0,数据:1(类:java.lang.Integer) token :1,数据:2(类:java.lang.Integer) token :2,数据:3(类:java.lang.Integer) token :3,数据:4(类:java.lang.Integer) token : 4]>

最佳答案

我找到了一个方法,我将其发布以帮助其他人。我必须将 ListView 更改为回收 View 并使用此命令。

onView(withId(R.id.list))
.perform(RecyclerViewActions.actionOnItem(
hasDescendant(withText("Your string")), click()));

如果在此行代码之前有多个操作,您可能需要使用 Thread.sleep(2000)。您还需要在 build.gradle 中使用此依赖项:

androidTestImplementation("com.android.support.test.espresso:espresso-contrib:2.2.2") {
exclude group: 'com.android.support', module: 'appcompat'
exclude group: 'com.android.support', module: 'support-v4'
exclude group: 'com.android.support', module: 'support-v7'
exclude group: 'com.android.support', module: 'design'
exclude module: 'support-annotations'
exclude module: 'recyclerview-v7'
}

关于java - 如何使用 espresso 根据项目文本从 ListView 中单击项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56327186/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com