【问题标题】:Selecting off screen item in a spinner using Espresso使用 Espresso 在微调器中选择屏幕外项目
【发布时间】:2016-05-13 17:48:39
【问题描述】:

我有一个 Spinner 有 20 个项目。如果用户点击微调器时屏幕上显示item,则以下代码有效。

onData(allOf(is(instanceOf(SpinnerItem.class)), is(item))).perform(click());

对于需要滚动的item,测试将遇到以下异常:

android.support.test.espresso.PerformException: Error performing 'single click - At Coordinates: 719, -243 and precision: 16, 16' on view ' displaying data matching: (is an instance of SpinnerItem and is <Text>) within adapter view matching: is assignable from class: class android.widget.AdapterView'.
at android.support.test.espresso.PerformException$Builder.build(PerformException.java:83)
...

您可以清楚地看到 y 位置在 -243,因此它无法执行点击。我尝试添加 perform(scrollTo(), click()),但它抱怨 scrollTo 不适用于 onData。

感谢任何帮助。谢谢!

【问题讨论】:

    标签: android android-espresso


    【解决方案1】:

    我还有一个大的微调器,滚动效果很好。我的代码如下:

    onData(allOf(is(instanceOf(String.class)), containsString("5.1.3"))).perform(click());
    

    使用 espresso 2.2.2:

    com.android.support.test.espresso:espresso-core:2.2.2
    

    唯一的区别是我在适配器中使用 String 而不是自定义类。 也许您应该尝试从SpinnerItem 切换到String 只是为了查看这个错误会消失吗?

    is(SpinnerItem) 也有问题。您可以尝试为您的 SpinnerItems 编写自己的 Matcher,如下所示:

    public static Matcher<Object> withContent(final String content) {
        return new BoundedMatcher<Object, SpinnerItem>(SpinnerItem.class) {
            @Override
            public boolean matchesSafely(SpinnerItem myObj) {
                return myObj.content == content;
            }
    
            @Override
            public void describeTo(Description description) {
                description.appendText("with content '" + content + "'");
            }
        };
    }
    

    并使用:

    onData(withContent("5.")).inAdapterView(withId(R.id.contents_theory_listview)).perform(click());
    

    此示例假设您的项目中有一个 content 字段,您可以检查它是否与模式相等。

    我希望我给了你一些想法,它们会对你有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-15
      • 1970-01-01
      • 2021-09-14
      相关资源
      最近更新 更多