Htm*_*sin 6 android android-fragments android-espresso android-recyclerview
如何使用实现具有匹配多个视图的ID的RecylerView的片段来定位Viewpager?
我有一个MainActivity,它有一个Viewpager.Viewpager有5个标签.在这5个选项卡中,我使用RecylerViews在每个选项卡中加载图像.
RecylerView XML在不同的片段中重复使用,因此当使用Espresso访问它时,它会让抱怨ID与多个视图匹配.
<android.support.v7.widget.RecyclerView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
Run Code Online (Sandbox Code Playgroud)
我的RecylerView不加载任何文本,只加载图像,所以我甚至不能做withText("Text here").我也不能onData()用于RecylerViews.
@RunWith(AndroidJUnit4.class)
@LargeTest
public class ExampleTest {
@Rule
public ActivityTestRule<MainActivity> mActivityRule = new ActivityTestRule<>(
MainActivity.class);
Activity activity = mActivityRule.getActivity();
@Test
public void ExampleMethod() {
// perform a swipe
onView(withId(R.id.viewpager)).perform(swipeLeft());
// try to click on one of the recycler view items.
// this crashes:
onView(withId(R.id.recycler_view))
.perform(RecyclerViewActions.actionOnItemAtPosition(2, click()));
}
}
Run Code Online (Sandbox Code Playgroud)
所以它崩溃并指出错误
android.support.test.espresso.AmbiguousViewMatcherException:'with id:com.example.app:id/recycler_view'匹配层次结构中的多个视图.问题视图在下方标有"****MATCHES****".
//列出不同的层次结构
View Hierarchy:
View Hierarchy:
+>DecorView{id=-1, visibility=VISIBLE, width=720, height=1280,
has-focus=false, has-focusable=true, has-window-focus=true,
is-clickable=false, is-enabled=true, is-focused=false,
is-focusable=false, is-layout-requested=false, is-selected=false,
root-is-layout-requested=false, has-input-connection=false, x=0.0,
y=0.0, child-count=1}
//...
Run Code Online (Sandbox Code Playgroud)
Dem*_*oul 15
我在使用a时遇到了同样的问题ViewPager,并将isDisplayed()条款添加到ViewMatcher为我解决的问题中(尽管如同在Espresso中的所有内容一样,它有时会出现片状)...
onView(allof(isDisplayed(), withId(R.id.recycler_view)))
.perform(RecyclerViewActions.actionOnItemAtPosition(2, click()));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4396 次 |
| 最近记录: |