我想点击textview(这个textview是一个线性布局),但它给出了下面提到的错误。尝试了Espresso.onData,但它引发了一些其他错误。那么如何在这种情况下使用Espresso.onData?
android.support.test.espresso.NoMatchingViewException:找不到层次结构中的视图匹配:(使用id:logout:id / Profile_login_logout并且具有父匹配:具有id:logout:id / main_layout并且在屏幕上显示为用户)
如果目标视图不是视图层次结构的一部分,您可能需要使用Espresso.onData从以下某个
加载它。AdapterViews:android.support.v7.widget.AppCompatSpinner {3ca0fd9d GFED..C。 ......一世。 0,0-0,0#7f10043a app:id / language_profile_edit}
ViewInteraction appCompatTextView5 = onView(
allOf(withId(R.id.Profile_login_logout),
withParent(withId(R.id.main_layout)),
isDisplayed()));
appCompatTextView5.perform(scrollTo(), click());
这是xml文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/dull_gray">
<ProgressBar
android:id="@+id/progress_profile"
style="?android:progressDrawable"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:visibility="gone" />
<TextView
android:id="@+id/text_loading_profile"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/progress_profile"
android:layout_centerHorizontal="true"
android:text="@string/loading"
android:visibility="gone" />
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/main_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/profile_bg">
<RelativeLayout
android:id="@+id/person_image_profile_containner"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/person_image_profile"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:padding="@dimen/margin20" />
</RelativeLayout>
<ProgressBar
android:id="@+id/progress_image_profile"
style="?android:progressDrawable"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:visibility="gone" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_margin="@dimen/topMarginU2"
android:layout_toRightOf="@+id/person_image_profile_containner">
<TextView
android:id="@+id/person_name_profile"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"/>
<EditText
android:id="@+id/person_name_profile_edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:hint="@string/enter_name"
android:visibility="gone" />
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/mobile_profile_initial"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/topMargin"
android:textSize="@dimen/txtSizeS"
tools:ignore="HardcodedText" />
<EditText
android:id="@+id/mobile_profile_edit_initial"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:editable="false"
android:layout_alignParentBottom="true"
android:visibility="gone"
tools:ignore="HardcodedText" />
</RelativeLayout>
<EditText
android:id="@+id/email_profile_edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone" />
</LinearLayout>
</RelativeLayout>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:focusable="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_height="wrap_content"
android:paddingLeft="@dimen/topMarginU2"
android:text="@string/language"/>
<Spinner
android:id="@+id/language_profile_edit"
android:layout_height="wrap_content"/>
</LinearLayout>
<LinearLayout
android:id="@+id/selected_exams"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/selected_exams"/>
</LinearLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.RecyclerView
android:id="@+id/horiz_scroll_exams"
android:layout_width="wrap_content"
android:layout_centerVertical="true"
android:scrollbars="horizontal" />
</RelativeLayout>
<LinearLayout
android:id="@+id/personal_information"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:padding="@dimen/topMarginU2"
android:text="@string/personal_information"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:text="@string/date_of_birth"
android:textSize="@dimen/textSize16" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@string/qualification"
android:textSize="@dimen/textSize16" />
<Spinner
android:id="@+id/qualification_profile_edit"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/topMargin"
android:padding="@dimen/topMarginU2"
android:textSize="@dimen/textSize16"
android:visibility="gone" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/Personal_address"
android:layout_height="wrap_content"
android:text="@string/address"
android:textSize="@dimen/textSize16" />
<LinearLayout
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/address_basic"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/topMarginU2"
tools:ignore="HardcodedText" />
<EditText
android:id="@+id/edit_address_basic"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/topMarginU2"
android:layout_marginTop="@dimen/topMarginU1"
android:hint="@string/enter_address"
android:visibility="gone" />
<Spinner
android:id="@+id/edit_address_state"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/topMargin"
android:textSize="@dimen/txtSizeS"
android:visibility="gone" />
</LinearLayout>
</LinearLayout>
<View
android:layout_width="match_parent"
android:background="@color/dull_gray" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/title5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:textSize="@dimen/txtSize" />
<ImageView
android:id="@+id/dot1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:src="@drawable/dot" />
</RelativeLayout>
</LinearLayout>
</android.support.v7.widget.CardView>
<TextView
android:id="@+id/Profile_login_logout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/signup_splash_tv"
android:layout_centerHorizontal="true" />
</LinearLayout>
</ScrollView>
答案 0 :(得分:0)
鉴于布局有多么庞大,我怀疑allOf()
匹配器在isDisplayed()
失败了。当视图当前未显示在屏幕上时失败。
我真的不明白为什么你需要所有三个匹配器来唯一地识别视图。 Profile_login_logout
似乎是一个唯一的ID,除withId()
匹配器之外不需要任何其他ID。
如果要断言显示此视图,则需要先滚动到该视图。但是scrollTo()
将检查在perform()
调用的一部分滚动后是否显示视图。此外,click()
也有isDisplayingAtLeast(90)
约束。
如果您正在处理ViewPager(我希望不是这种情况)或类似的东西,您可以通过其父级查找视图,如allOf(withId(R.id.Profile_login_logout), hasParent(allOf(withId(R.id.main_layout), isDisplayed()))
onData()
,因为您没有除旋转器之外的任何适配器视图,这不属于当前正在测试的部分。