2017-03-06 67 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)))))