2015-04-15 19 views
5

Test, który próbuję wykonać: dokonać zakupu, zanotuj tytuł, a następnie wróć do działania w domu i naciśnij "home_image", który jest przyciskiem obrazu.Espresso AmbiguousViewMatcherException podczas próby kliknięcia przycisku nawigacyjnego

Mój problem polega na tym, że nie mogę poruszać się po home_image. Naciskam to i otrzymuję fałszywy duplikat ID. Wierzę, że duplikat identyfikatora odnosi się do niewidocznych fragmentów, które mają ten sam identyfikator. Dlaczego nie jest to problem na początku testu jest dziwne. Przepraszamy, musiał skrócić dzienniki, ze względu na limit tekstu. To, co chciałbym zrobić, to po prostu uruchomić aktywność domową bezpośrednio, ale ten apartament jest o połowę uciążliwy dla prostych rzeczy. Nawet polecenie przesunięcia otrzyma ten błąd! Po raz pierwszy wszystkie te przyciski działają, myślę, że to błąd w espresso i potrzebuję obejść.

Dzięki za pomysły!

mSectionsPagerAdapter = new SectionsPagerAdapter(getFragmentManager()); 

    // Set up the ViewPager with the sections adapter. 
    mViewPager = (ViewPagerExtended) findViewById(R.id.pager); 
    mViewPager.setAdapter(mSectionsPagerAdapter); 
    mViewPager.setSwipeEnabled(true); 

    final ImageButton homeImageButton = (ImageButton) findViewById(R.id.home_image); 
    final ImageButton exploreImageButton = (ImageButton) findViewById(R.id.explore_image); 
    final ImageButton profileImageButton = (ImageButton) findViewById(R.id.profile_image); 

    mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() 
    { 
     @Override 
     public void onPageSelected(int position) 
     { 
      switch (position) 
      { 
       case 0: 
        homeImageButton.setImageResource(R.drawable.home_icon); 
        exploreImageButton.setImageResource(R.drawable.explore_icon_inactive); 
        profileImageButton.setImageResource(R.drawable.profile_icon_inactive); 
        break; 
       case 1: 
        homeImageButton.setImageResource(R.drawable.home_icon_inactive); 
        exploreImageButton.setImageResource(R.drawable.explore_icon); 
        profileImageButton.setImageResource(R.drawable.profile_icon_inactive); 
        break; 
       case 2: 
        homeImageButton.setImageResource(R.drawable.home_icon_inactive); 
        exploreImageButton.setImageResource(R.drawable.explore_icon_inactive); 
        profileImageButton.setImageResource(R.drawable.profile_icon); 
        break; 
      } 
     } 
    }); 

    homeImageButton.setOnClickListener(new View.OnClickListener() 
    { 
     @Override 
     public void onClick(View v) 
     { 
      mViewPager.setCurrentItem(0); 
     } 
    }); 

    exploreImageButton.setOnClickListener(new View.OnClickListener() 
    { 
     @Override 
     public void onClick(View v) 
     { 
      mViewPager.setCurrentItem(1); 
     } 
    }); 

    profileImageButton.setOnClickListener(new View.OnClickListener() 
    { 
     @Override 
     public void onClick(View v) 
     { 
      mViewPager.setCurrentItem(2); 
     } 
    }); 

// Układ tutaj

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      xmlns:app="http://schemas.android.com/apk/res-auto" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:tag="default" 
      android:id="@+id/home" 
    > 

<LinearLayout 
     android:id="@+id/tab_bar" 
     android:layout_width="match_parent" android:layout_height="48dp" 
     android:background="@color/****_orange_light" 
     android:gravity="center" 
     > 

    <ImageButton 
      android:id="@+id/home_image" 
      android:layout_width="0dp" android:layout_height="match_parent" 
      android:src="@drawable/home_icon" 
      android:layout_weight="1" 
      android:background="#00000000" 
      /> 
    <ImageButton 
      android:id="@+id/explore_image" 
      android:layout_width="0dp" android:layout_height="match_parent" 
      android:src="@drawable/explore_icon_inactive" 
      android:layout_weight="1" 
      android:background="#00000000" 
      /> 
    <ImageButton 
      android:id="@+id/profile_image" 
      android:layout_width="0dp" android:layout_height="match_parent" 
      android:src="@drawable/profile_icon_inactive" 
      android:layout_weight="1" 
      android:background="#00000000" 
      /> 

    <android.support.v7.app.MediaRouteButton 
      android:id="@+id/media_route_button" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:mediaRouteTypes="user" 
      android:visibility="gone" 

// Test wyjść

Running tests 
Test running started 
android.support.test.espresso.AmbiguousViewMatcherException: 'with id: com.*******.main:id/home_image' matches multiple views in the hierarchy. 
Problem views are marked with '****MATCHES****' below. 

View Hierarchy: 
+>DecorView{id=-1, visibility=VISIBLE, width=1080, height=1776, has-focus=true, 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} 
| 
+->LinearLayout{id=-1, visibility=VISIBLE, width=1080, height=1776, has-focus=true, 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=2} 
| 
+-->ViewStub{id=16909070, visibility=GONE, width=0, height=0, has-focus=false, has-focusable=false, has-window-focus=true, is-clickable=false, is-enabled=true, is-focused=false, is-focusable=false, is-layout-requested=true, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=0.0} 
| 
+-->FrameLayout{id=-1, visibility=VISIBLE, width=1080, height=1701, has-focus=true, 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=75.0, child-count=1} 
| 
+--->FitWindowsLinearLayout{id=2131492941, res-name=action_bar_root, visibility=VISIBLE, width=1080, height=1701, has-focus=true, 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=2} 
| 
+---->ViewStubCompat{id=2131492942, res-name=action_mode_bar_stub, visibility=GONE, width=0, height=0, has-focus=false, has-focusable=false, has-window-focus=true, is-clickable=false, is-enabled=true, is-focused=false, is-focusable=false, is-layout-requested=true, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=0.0} 
| 
+---->NativeActionModeAwareLayout{id=16908290, res-name=content, visibility=VISIBLE, width=1080, height=1701, has-focus=true, 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} 
| 
+----->RelativeLayout{id=2131492921, res-name=home, visibility=VISIBLE, width=1080, height=1701, has-focus=true, 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=2} 
| 
+------>LinearLayout{id=2131493015, res-name=tab_bar, visibility=VISIBLE, width=1080, height=144, 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=4} 
| 
+------->ImageButton{id=2131493016, res-name=home_image, visibility=VISIBLE, width=360, height=144, has-focus=false, has-focusable=true, has-window-focus=true, is-clickable=true, is-enabled=true, is-focused=false, is-focusable=true, is-layout-requested=false, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=0.0} ****MATCHES**** 
| 
+------->ImageButton{id=2131493017, res-name=explore_image, visibility=VISIBLE, width=360, height=144, has-focus=false, has-focusable=true, has-window-focus=true, is-clickable=true, is-enabled=true, is-focused=false, is-focusable=true, is-layout-requested=false, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=360.0, y=0.0} 
| 
+------->ImageButton{id=2131493018, res-name=profile_image, visibility=VISIBLE, width=360, height=144, has-focus=false, has-focusable=true, has-window-focus=true, is-clickable=true, is-enabled=true, is-focused=false, is-focusable=true, is-layout-requested=false, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=720.0, y=0.0} 
| 
+------->MediaRouteButton{id=2131493019, res-name=media_route_button, desc=Cast, visibility=GONE, width=0, height=0, has-focus=false, has-focusable=false, has-window-focus=true, is-clickable=true, is-enabled=false, is-focused=false, is-focusable=true, is-layout-requested=true, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=0.0} 
| 
+------>ViewPagerExtended{id=2131493020, res-name=pager, visibility=VISIBLE, width=1080, height=1557, has-focus=true, has-focusable=true, has-window-focus=true, is-clickable=false, is-enabled=true, is-focused=false, is-focusable=true, is-layout-requested=false, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=144.0, child-count=3} 
| 
+------->LinearLayout{id=2131493215, res-name=fragment_member_home, visibility=VISIBLE, width=1080, height=1557, 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=-1080.0, y=0.0, child-count=3} 
| 
+-------->PagerSlidingTabStrip{id=2131493216, res-name=member_home_tabs, visibility=GONE, width=0, height=0, has-focus=false, has-focusable=false, has-window-focus=true, is-clickable=false, is-enabled=true, is-focused=false, is-focusable=true, is-layout-requested=true, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=0.0, child-count=1} 
| 
+--------->LinearLayout{id=-1, visibility=VISIBLE, width=0, height=0, 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=true, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=0.0, child-count=2} 
| 
+---------->TextView{id=-1, visibility=VISIBLE, width=0, height=0, has-focus=false, has-focusable=true, has-window-focus=true, is-clickable=true, is-enabled=true, is-focused=false, is-focusable=true, is-layout-requested=true, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=0.0, text=MY CLASSES, input-type=0, ime-target=false, has-links=false} 
| 
+---------->TextView{id=-1, visibility=VISIBLE, width=0, height=0, has-focus=false, has-focusable=true, has-window-focus=true, is-clickable=true, is-enabled=true, is-focused=false, is-focusable=true, is-layout-requested=true, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=0.0, text=MY PATTERNS, input-type=0, ime-target=false, has-links=false} 
| 
+-------->View{id=-1, visibility=VISIBLE, width=1080, height=3, has-focus=false, has-focusable=false, 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} 
| 
+-------->ViewPagerExtended{id=2131493217, res-name=member_home_view_pager, visibility=VISIBLE, width=1080, height=1554, has-focus=false, has-focusable=true, has-window-focus=true, is-clickable=false, is-enabled=true, is-focused=false, is-focusable=true, is-layout-requested=false, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=3.0, child-count=2} 
| 
+--------->RelativeLayout{id=-1, visibility=VISIBLE, width=1080, height=1554, 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=2} 
| 
+---------->SwipeRefreshLayout{id=2131493222, res-name=swipe_container, visibility=VISIBLE, width=1080, height=1554, 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=2} 
| 
+----------->CircleImageView{id=-1, visibility=GONE, width=140, height=140, has-focus=false, has-focusable=false, 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=470.0, y=-140.0} 
| 
+----------->ListView{id=2131493178, res-name=courseGridView, visibility=VISIBLE, width=1080, height=1554, has-focus=false, has-focusable=true, has-window-focus=true, is-clickable=true, is-enabled=true, is-focused=false, is-focusable=true, 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} 
| 
+------------>LinearLayout{id=-1, visibility=VISIBLE, width=1080, height=905, has-focus=false, has-focusable=false, 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} 
| 
+------------->RelativeLayout{id=2131493121, res-name=courseGridCell, visibility=VISIBLE, width=1080, height=905, has-focus=false, has-focusable=false, has-window-focus=true, is-clickable=true, 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=6} 
| 
+-------------->FrameLayout{id=2131493122, res-name=courseImageFrame, visibility=VISIBLE, width=1080, height=613, has-focus=false, has-focusable=false, 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=2} 
| 
+--------------->DynamicNetworkImageView{id=2131493123, res-name=courseImage, visibility=VISIBLE, width=1080, height=613, has-focus=false, has-focusable=false, 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} 
| 
+--------------->ImageView{id=2131493124, res-name=playButtonImage, visibility=VISIBLE, width=168, height=169, has-focus=false, has-focusable=false, 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=456.0, y=222.0} 
| 
+-------------->FontTextView{id=2131493125, res-name=titleText, visibility=VISIBLE, width=936, height=166, has-focus=false, has-focusable=false, 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=72.0, y=613.0, text=40 Techniques Every Sewer Should Know, input-type=0, ime-target=false, has-links=false} 
| 
+-------------->FontTextView{id=2131493126, res-name=instructorText, visibility=VISIBLE, width=376, height=105, has-focus=false, has-focusable=false, 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=72.0, y=779.0, text=with Gail Yellen, input-type=0, ime-target=false, has-links=false} 
| 
+-------------->View{id=2131493127, res-name=horizontalLine1, visibility=VISIBLE, width=1080, height=3, has-focus=false, has-focusable=false, 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=884.0} 
| 
+-------------->View{id=2131493128, res-name=footer_divider, visibility=VISIBLE, width=1080, height=3, has-focus=false, has-focusable=false, 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=884.0} 
| 
+-------------->View{id=-1, visibility=VISIBLE, width=1080, height=18, has-focus=false, has-focusable=false, 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=887.0} 
| 
+---------->SwipeRefreshLayout{id=2131493218, res-name=swipe_refresh_empty_container, visibility=GONE, width=0, height=0, has-focus=false, has-focusable=false, has-window-focus=true, is-clickable=false, is-enabled=true, is-focused=false, is-focusable=false, is-layout-requested=true, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=0.0, child-count=2} 
| 
+----------->CircleImageView{id=-1, visibility=GONE, width=0, height=0, has-focus=false, has-focusable=false, has-window-focus=true, is-clickable=false, is-enabled=true, is-focused=false, is-focusable=false, is-layout-requested=true, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=0.0} 
| 
+----------->ScrollView{id=-1, visibility=VISIBLE, width=0, height=0, has-focus=false, has-focusable=true, has-window-focus=true, is-clickable=false, is-enabled=true, is-focused=false, is-focusable=true, is-layout-requested=true, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=0.0, child-count=1} 
| 
+------------>LinearLayout{id=2131493219, res-name=not_enrolled_ui, visibility=VISIBLE, width=0, height=0, 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=true, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=0.0, child-count=4} 
| 
+------------->ImageView{id=2131493016, res-name=home_image, visibility=VISIBLE, width=0, height=0, has-focus=false, has-focusable=false, has-window-focus=true, is-clickable=false, is-enabled=true, is-focused=false, is-focusable=false, is-layout-requested=true, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=0.0} ****MATCHES**** 
| 
+------------->TextView{id=-1, visibility=VISIBLE, width=0, height=0, has-focus=false, has-focusable=false, has-window-focus=true, is-clickable=false, is-enabled=true, is-focused=false, is-focusable=false, is-layout-requested=true, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=0.0, text=Welcome to *****. Looks like you aren't enrolled in any classes yet., input-type=0, ime-target=false, has-links=false} 
| 
+------------->Button{id=2131493220, res-name=explore_****_link, visibility=VISIBLE, width=0, height=0, has-focus=false, has-focusable=true, has-window-focus=true, is-clickable=true, is-enabled=true, is-focused=false, is-focusable=true, is-layout-requested=true, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=0.0, text=Explore Classes, input-type=0, ime-target=false, has-links=false} 
| 
+------------->IconButton{id=2131493221, res-name=commercial_button, visibility=VISIBLE, width=0, height=0, has-focus=false, has-focusable=true, has-window-focus=true, is-clickable=true, is-enabled=true, is-focused=false, is-focusable=true, is-layout-requested=true, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=0.0, text=Play Commercial, input-type=0, ime-target=false, has-links=false} 
| 
+--------->FrameLayout{id=-1, visibility=VISIBLE, width=1080, height=1554, has-focus=false, has-focusable=false, 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=1080.0, y=0.0, child-count=1} 
| 
+---------->RecyclerView{id=2131493227, res-name=recycler_view, visibility=VISIBLE, width=1080, height=1554, has-focus=false, has-focusable=false, 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=0} 
| 
+------->LinearLayout{id=-1, visibility=VISIBLE, width=1080, height=1557, has-focus=true, 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} 
| 
+-------->ListView{id=2131493190, res-name=categoryGridView, visibility=VISIBLE, width=1080, height=1557, has-focus=true, has-focusable=true, has-window-focus=true, is-clickable=true, is-enabled=true, is-focused=true, is-focusable=true, is-layout-requested=false, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=0.0, child-count=3} 
| 
+--------->RelativeLayout{id=-1, visibility=VISIBLE, width=1080, height=504, 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=3} 
| 
+---------->TextView{id=2131493267, res-name=explore_text, visibility=VISIBLE, width=1080, height=168, has-focus=false, has-focusable=false, 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, text=Explore, input-type=0, ime-target=false, has-links=false} 
| 
+---------->LinearLayout{id=2131493268, res-name=linear_layout, visibility=VISIBLE, width=1080, height=168, 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=168.0, child-count=2} 
| 
+----------->Button{id=2131493269, res-name=on_sale_button, visibility=VISIBLE, width=513, height=168, has-focus=false, has-focusable=true, has-window-focus=true, is-clickable=true, is-enabled=true, is-focused=false, is-focusable=true, is-layout-requested=false, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=18.0, y=0.0, text=On Sale, input-type=0, ime-target=false, has-links=false} 
| 
+----------->Button{id=2131493270, res-name=free_button, visibility=VISIBLE, width=513, height=168, has-focus=false, has-focusable=true, has-window-focus=true, is-clickable=true, is-enabled=true, is-focused=false, is-focusable=true, is-layout-requested=false, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=549.0, y=0.0, text=Free, input-type=0, ime-target=false, has-links=false} 
| 
+---------->TextView{id=2131493271, res-name=category_text, visibility=VISIBLE, width=1080, height=168, has-focus=false, has-focusable=false, 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=336.0, text=Categories, input-type=0, ime-target=false, has-links=false} 
| 
+--------->LinearLayout{id=-1, visibility=VISIBLE, width=1080, height=540, has-focus=false, has-focusable=false, 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=504.0, child-count=2} 
| 

at dalvik.system.VMStack.getThreadStackTrace(Native Method) 
at java.lang.Thread.getStackTrace(Thread.java:579) 
at android.support.test.espresso.base.DefaultFailureHandler.getUserFriendlyError(DefaultFailureHandler.java:82) 
at android.support.test.espresso.base.DefaultFailureHandler.handle(DefaultFailureHandler.java:53) 
at android.support.test.espresso.ViewInteraction.runSynchronouslyOnUiThread(ViewInteraction.java:185) 
at android.support.test.espresso.ViewInteraction.doPerform(ViewInteraction.java:115) 
at android.support.test.espresso.ViewInteraction.perform(ViewInteraction.java:87) 
at com.****.****.main.tests.purchase.BasePurchaseTest.testHelperSeeIfTitleInLibrary(BasePurchaseTest.java:91) 
at com.****.****.main.tests.purchase.PurchaseTests.testPurchaseIsInGallery(PurchaseTests.java:184) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:515) 
at android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:214) 
at android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:199) 
at android.test.ActivityInstrumentationTestCase2.runTest(ActivityInstrumentationTestCase2.java:192) 
at junit.framework.TestCase.runBare(TestCase.java:134) 
at junit.framework.TestResult$1.protect(TestResult.java:115) 
at junit.framework.TestResult.runProtected(TestResult.java:133) 
at android.support.test.internal.runner.junit3.DelegatingTestResult.runProtected(DelegatingTestResult.java:90) 
at junit.framework.TestResult.run(TestResult.java:118) 
at android.support.test.internal.runner.junit3.AndroidTestResult.run(AndroidTestResult.java:49) 
at junit.framework.TestCase.run(TestCase.java:124) 
at android.support.test.internal.runner.junit3.NonLeakyTestSuite$NonLeakyTest.run(NonLeakyTestSuite.java:63) 
at junit.framework.TestSuite.runTest(TestSuite.java:243) 
at junit.framework.TestSuite.run(TestSuite.java:238) 
at android.support.test.internal.runner.junit3.DelegatingTestSuite.run(DelegatingTestSuite.java:103) 
at android.support.test.internal.runner.junit3.AndroidTestSuite.run(AndroidTestSuite.java:63) 
at android.support.test.internal.runner.junit3.JUnit38ClassRunner.run(JUnit38ClassRunner.java:90) 
at org.junit.runners.Suite.runChild(Suite.java:128) 
at org.junit.runners.Suite.runChild(Suite.java:24) 
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231) 
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60) 
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229) 
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50) 
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222) 
at org.junit.runners.ParentRunner.run(ParentRunner.java:300) 
at org.junit.runner.JUnitCore.run(JUnitCore.java:157) 
at org.junit.runner.JUnitCore.run(JUnitCore.java:136) 
at android.support.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:270) 
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1701) 

Odpowiedz

12

To nie jest błąd w espresso. Hierarchia widoku wyraźnie pokazuje dwa widoki o tym samym ID. Jest to prawdopodobnie spowodowane tym, że widok znajduje się wewnątrz ViewPagera, którym jest AdapterView. Tak więc należy oczekiwać wielu wystąpień.

Aby rozwiązać ten problem, lepiej dopasuj widok do widoku. Idąc po ID nie pomaga. Ponieważ drugi przycisk ImageView dla przycisku głównego nie jest widoczny, ponieważ jego rodzic jest GONE, możesz po prostu dopasować do niego:

onView(allOf(withId(..), withEffectiveVisibility(VISIBLE))).perform(click()); 
+2

Niezły pomysł, ale wciąż pojawia się wspomniany błąd. Mam viewPager, który zawiera kilka Fragmentów i recyclerView w każdym Fragment. '' 'android.support.test.espresso.AmbiguousViewMatcherException: '(z id: com.my.package/poi_recycler_view i view ma efektywną widoczność = VISIBLE)' dopasowuje wiele widoków w hierarchii. '' ' – Hesam

+2

Moje rozwiązanie do mojego powyższego problemu' '' OnView (allOf ( withId (R.id.poi_recycler_view), isDisplayed())) .Przeprowadzić (scrollTo (hasDescendant (WithText (mydestination))), kliknij()); '' ' – Hesam

+2

dla mnie działa tylko z hasFocus(), wszystkie widoki recyklingu były widoczne i wyświetlane: onView (allOf (withId (R.id.recycler_id), hasFocus())). Perform (RecyclerViewActions.actionOnItemAtPosition (2, kliknij())); –

Powiązane problemy