Dush
Dush

Reputation: 21

Android Espresso - combined view matchers for nested parents

I want to find the button with id 'buttonActionNo' from the following view hierarchy.

I tried the following code, but it doesn't work. Giving 'No views in hierarchy found matching:' error.

**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());**

Has anyone tried to grab a view which has few level of nested parents?

    <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 view hierarchry as follows:

+---------->LinearLayout{id=2131492990, res-name=redFlagQuestion1, 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} | +----------->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=Is the child becoming less responsive?, 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=For example, 'not answering questions' or 'not making sense, input-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=Yes, 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=No, input-type=0, ime-target=false, has-links=false} |

Upvotes: 2

Views: 3281

Answers (1)

Dmitriy
Dmitriy

Reputation: 517

Based on view hierarchry you have mistaked in order of outerContainer and questioContainer.

And I would try different sample of code in onView:

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

Upvotes: 7

Related Questions