Android 安卓-浓缩咖啡-长选项菜单-单击不可见的选项菜单项

Android 安卓-浓缩咖啡-长选项菜单-单击不可见的选项菜单项,android,android-espresso,Android,Android Espresso,浓缩咖啡如何点击在长选项菜单中还不可见的(选项)菜单项 打开选项菜单很容易: openActionBarOverflowOrOptionsMenu( getInstrumentation().getTargetContext()); 我尝试了scrollTo,但没有成功: onView( withText("Option menu item text")).perform( scrollTo(), click()); onView( withText( R.id.optionMenuId))

浓缩咖啡如何点击在长选项菜单中还不可见的(选项)菜单项

打开选项菜单很容易:

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

你有好的解决办法吗

操作栏溢出菜单是一个

,所以这在这里不起作用

由于所需的视图位于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) { }
}
onData(allOf(instanceOf(MenuItem.class),with title(title)).perform(click());
带标题的静态MenuItemTitleMatcher(字符串标题){
返回新的MenuItemTitleMatcher(标题);
}
类MenuItemTitleMatcher扩展了BaseMatcher{
私人最终字符串标题;
公共MenuItemTitleMatcher(字符串标题){this.title=title;}
@重写公共布尔匹配(对象o){
if(菜单项的o实例){
return((MenuItem)o.getTitle().equals(title);
}
返回false;
}
@重写public void descripito(Description Description){}
}