相关疑难解决方法(0)

onChildView和hasSiblings与Espresso

我正在尝试从特定视图访问按钮.相同的视图显示6次.这是我正在使用的代码.

public void testTimeConfig(){
    onData(withDesc("description")).onChildView(withId(R.id.positive)).perform(click());
}

private static Matcher<Object> withDesc(String desc) {
    return allOf(is(instanceOf(String.class)), is(desc));
}
Run Code Online (Sandbox Code Playgroud)

当我跑步时,我收到一个错误:

在视图上执行'加载适配器数据'时出错'可从类中分配:class android.widget.AdapterView'.

这是访问子视图的最佳方式吗?如果是这样,怎么样?

编辑

这是我现在尝试使用的代码.

   onView(allOf((withContentDescription("description")), hasSibling(withContentDescription("SettingsLayout")), hasSibling(withId(R.id.positive)))).perform(click());
Run Code Online (Sandbox Code Playgroud)

   onView(allOf((withContentDescription("description")), hasSibling(withId(R.id.positive)))).perform(click());
Run Code Online (Sandbox Code Playgroud)

出现此错误:

   No views in hierarchy found matching
Run Code Online (Sandbox Code Playgroud)

xml

    <view
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/setAGoalTitle"
        android:layout_alignParentLeft="true"
        class="com.xxx"
        android:layout_marginTop="30dp"
        android:id="@+id/timeGoalWidget"
        app:goalLabel="@string/time_min_upper"
        app:icon="@drawable/ic_icn_summary_time"
        app:step="300"
        app:valueFormat="time"
        android:gravity="center_horizontal"
        android:layout_marginBottom="60dp"
        android:contentDescription="setAGoalTimeConfigurator"/>

    <view
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignTop="@id/timeGoalWidget"
        class="com.xxx"
        android:id="@+id/distanceGoalWidget"
        app:goalLabel="@string/distance_upper"
        app:icon="@drawable/ic_icn_summary_track"
        app:step="0.25"
        app:valueFormat="decimal_two"
        android:gravity="center_horizontal"
        android:contentDescription="setAGoalDistanceConfigurator"/>

    <view
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/timeGoalWidget"
        android:layout_alignLeft="@id/timeGoalWidget"
        class="com.xxx"
        android:id="@+id/paceGoalWidget"
        app:goalLabel="@string/pace_upper"
        app:icon="@drawable/ic_icn_summary_pace"
        app:valueFormat="time"
        app:step="10"
        android:gravity="center_horizontal"
        android:layout_marginBottom="60dp"
        android:contentDescription="setAGoalPaceConfigurator"/>


    <view
        android:layout_width="wrap_content" …
Run Code Online (Sandbox Code Playgroud)

android hamcrest android-testing android-espresso

8
推荐指数
1
解决办法
2万
查看次数