android – Espresso – 检查ListView中是否存在TextView

我想在列表中查看Save€XX的显示.保存€XX是一个可见或不可见的TextView.我使用JUnit 4和Espresso 2.2.1.

我试着像这样检查:

onView(withText(startsWith("Save"))).check(matches(isdisplayed()));

但总是得到一个错误

android.support.test.espresso.AmbiguousViewMatcherException: 'with text: a string starting with "Save"' matches multiple views in the hierarchy.

如果使用Espresso在ListView中存在TextView,有没有办法?

UPDATE

我也试过使用onData:

onData(hasToString(startsWith("Save")))
                .inAdapterView(withId(R.id.suggestion_list_view)).atPosition(0)
                .check(matches(isdisplayed()));

但似乎onData适用于数据层,但不适用于视图层.因此,我收到错误

java.lang.RuntimeException: No data found matching: with toString() a string starting with "Save" contained values: <[Data: ...]>

解决方法

经过几次尝试,我找到了方法.

在这种情况下,我们应该使用组合方法并使用数据和视图层.我们按ID访问ListView并选择第一项.然后检查它是否为“保存”文本.

onData(anything())
                .inAdapterView(withId(R.id.list_view))
                .atPosition(0)
                .onChildView(withId(R.id.suggestion_saving))
                .check(matches(withText(startsWith("Save"))));

奇迹般有效.请享用!

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...