如何在Expresso中单击ImageView whit自动完成功能?

时间:2017-11-04 19:47:02

标签: android autocomplete automated-tests android-espresso android-testing

我有一个自动填充框,有一个功能“CityAdapter”,如何使用expresso测试访问Button / ImageView?我按 cityName 过滤了costum适配器,因此我可以按名称查找城市。

 onView(withId(R.id.autoCompleteCities))
                .perform(typeText(""), closeSoftKeyboard());
         Activity mActivity=mActivityTestRule.getActivity();

onData(instanceOf(CityAdapter.class))
                    .inAdapterView(withId(R.id.autoCompleteCities))
                    .atPosition(0)
                    .onChildView(withId(R.id.tvFavourite))
                    .perform(click());

以下是一个示例:enter image description here

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作:

    onView(withId(R.id.autoCompleteCities))
            .perform(typeText("E"));

    onData(instanceOf(City.class))
            .inRoot(RootMatchers.isPlatformPopup())
            .atPosition(0)
            .onChildView(withId(R.id.tvFavourite))
            .perform(click());
  • onView(~).perform(~)将在auto complete listview
  • 中显示view-port
  • onData(instanceOf(City.class))这将找到视图,其对象与上述类的对象相同(此处为City.class)。
  • inRoot(RootMatchers.isPlatformPopup())下拉菜单位于另一个窗口,而不是您的活动运行的默认窗口。所以我们必须指定我们要搜索该窗口。
  • atPosition(0)选择array-listlist-view中指定位置的项目。
  • onChildView(withId(R.id.tvFavourite))选择具有指定ID的子视图(此处为image-view)。

〜参考https://stackoverflow.com/a/45368345/8885981