gpt4 book ai didi

Android - Espresso - 长选项菜单 - 单击不可见的选项菜单项

转载 作者:太空宇宙 更新时间:2023-11-03 12:07:28 25 4
gpt4 key购买 nike

Espresso 如何点击在长选项菜单中尚不可见的(选项)菜单项?

打开选项菜单很简单:

openActionBarOverflowOrOptionsMenu( getInstrumentation().getTargetContext());

我试过,例如scrollTo,但没有成功:

onView( withText("Option menu item text")).perform( scrollTo(), click());

onView( withText( R.id.optionMenuId)).perform( scrollTo(), click());

onView( withId( is( R.id.appOptionMenu))).perform( swipeDown()); // where SwipeDown is a simple utility method on GeneralSwipeAction.

onData( anything()).inAdapterView( withId(R.id.wpeOptionMenu)).atPosition( 12).perform(click()); // I guess because it is not an adapter

你有好的解决方案吗?

最佳答案

ActionBar 溢出菜单是一个 PopUpWindow containing a ListView .

scrollTo() only works on descendants of ScrollView ,所以这在这里行不通。

因为您想要的 View 在 AdapterView 中,所以您需要使用 onData。

AdapterView 的数据对象属于 MenuItem 类型,您希望匹配菜单项的标题。像这样:

onData(allOf(instanceOf(MenuItem.class), withTitle(title))).perform(click());

static MenuItemTitleMatcher withTitle(String title) {
return new MenuItemTitleMatcher(title);
}

class MenuItemTitleMatcher extends BaseMatcher<Object> {
private final String title;
public MenuItemTitleMatcher(String title) { this.title = title; }

@Override public boolean matches(Object o) {
if (o instanceof MenuItem) {
return ((MenuItem) o).getTitle().equals(title);
}
return false;
}
@Override public void describeTo(Description description) { }
}

关于Android - Espresso - 长选项菜单 - 单击不可见的选项菜单项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25408530/

25 4 0