2017-03-06 30 views
0

我想从以下视图层次结构中找到ID为'buttonActionNo'的按钮。Android Espresso - 嵌套父母的组合视图匹配器

我试过下面的代码,但它不起作用。给“层次结构中没有视图找到匹配:”错误。

**ViewInteraction appCompatImageButton3 = onView( 
      allOf(withId(R.id.buttonActionNo), 
         allOf(withhParent(withId(R.id.actionButtonPanel)), 

         allOf(withParent(withId(R.id.outerContainer)), 

         allOf(withParent(withId(R.id.questioContainer)), 

         withParent(withId(R.id.redFlagQuestion1))))), 

         isDisplayed())); 

     appCompatImageButton3.perform(click());** 

有没有人试图抓住一个嵌套父母级别少的视图?

<LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical"> 

     <!-- redFlagQuestion1 --> 
     <FrameLayout android:id="@+id/questionOneContainer" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="@color/white"> 

      <include 
       android:id="@+id/redFlagQuestion1" 
       layout="@layout/row_base" /> 

     </FrameLayout> 

     <!-- redFlagQuestion 2 --> 
     <FrameLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="@color/white"> 

      <include 
       android:id="@+id/fillerLayout2" 
       layout="@layout/fill_space" /> 

      <include 
       android:id="@+id/redFlagQuestion2" 
       layout="@layout/row_base" /> 


     </FrameLayout> 

     <!-- redFlagQuestion 3 --> 
     <FrameLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="@color/white"> 

      <include 
       android:id="@+id/fillerLayout3" 
       layout="@layout/fill_space" /> 

      <include 
       android:id="@+id/redFlagQuestion3" 
       layout="@layout/row_base" /> 


     </FrameLayout> 

row_base.xml视图hierarchry如下:

+ ---------->的LinearLayout {ID = 2131492990,RES-NAME = redFlagQuestion1,能见度=可见的,宽度= 1080,height = 780,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} | + -----------> LinearLayout {id = 2131493041,res-name = outerContainer,visibility = VISIBLE,width = 1080,height = 780,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}

+ RelativeLayout {id = 2131493042,res-name = questioContainer,visibility = VISIBLE,width = 1080,height = 780,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 = 5}

+ -------------> AppCompatTextView {id = 2131493043,res-name = questionPanelQuestionNo,visibility = VISIBLE,width = 1080, height = 101,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 = 30.0,text = 1,input-type = 0, ime-target = false,has -links = false} |

+ -------------> AppCompatImageButton {id = 2131493044,res-name = questionPanelUpArrow,visibility = GONE,width = 0,height = 0, has-focus = false, has-focusable = false,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} |

+ -------------> AppCompatTextView {id = 2131493045,res-name = questionPanelQestion,visibility = VISIBLE,width = 960, height = 152,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 = 60.0,y = 161.0,text =儿童 变得不太敏感吗?,input-type = 0,ime -target = false, has-links = false} |

+ -------------> AppCompatTextView {id = 2131493046,res-name = questionPanelQestionExample,visibility = VISIBLE,width = 960, height = 114,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 = 60.0,y = 343.0,text =例如,'not 回答问题'或'没有意义,输入-type = 0, ime-target = false,has-links = false} |

+ -------------> RelativeLayout {id = 2131493047,res-name = actionButtonPanel,visibility = VISIBLE,width = 1080, height = 270,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 = 480.0,child-count = 4}

+ AppCompatImageButton {id = 2131493048,res-name = buttonActionYes,visibility = VISIBLE,width = 200,height = 200, 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 = 260.0, y = 0.0}

+ -------------- AppCompatImageButton {id = 2131493049,res-name = buttonActionNo,visibility = VISIBLE,width = 200,height = 200, 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 = 620.0, y = 0.0}

+ --------------> AppCompatTextView {id = 2131493050,res-name = txtViewYes,visibility = VISIBLE,width = 200,height = 49,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 = 260.0, y = 221.0,text =是,input-type = 0,ime-target = false,has -links = false} |

+ --------------> AppCompatTextView {id = 2131493051,res-name = txtViewNo,visibility = VISIBLE,width = 200,height = 49,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 = 620。0, y = 221.0,text =否,input-type = 0,ime-target = false,has-links = false}

回答

0

基于视图层次结构,您错误地按照outerContainer和questioContainer的顺序排列。

而且我会尝试不同的代码样本中onView:

allOf(withId(R.id.buttonActionNo), withParent(withParent(withParent(withParent(withId(R.id.redFlagQuestion1)))))