当滚动到Alpha视图后时,scrollTo不起作用

时间:2019-05-10 06:10:49

标签: android user-interface testing android-espresso

scrollTo位于具有Alpha背景的EditText后面时,我无法使LinearLayout工作。

我想避免uiautomator,因为我认为有时候它不起作用

<RelativeLayout ...>
<ScrollView>
 <LinearLayout>
   <EditText />
   <EditText />
   <EditText />
   <EditText />
   ....
   <EditText android:id="@+id/name" />
 </LinearLayout>
</ScrollView>

<LinearLayout
            android:id="@+id/button_group"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="16dp"
            android:layout_alignParentBottom="true"
            android:background="@color/white80">

</RelativeLayout>
onView(withId(R.id.name)).perform(scrollTo(), typeText(name), closeSoftKeyboard());

它说找不到ID名称。如果屏幕较大,但屏幕较小,并且edittext名称位于具有alpha backgroound的button_group后面,则该方法会正常工作。

1 个答案:

答案 0 :(得分:1)

也许您可以在执行滚动之前使用自定义button_group来更改ViewAction的可见性。

首先,您需要自定义ViewAction,以执行可见性更改:

private static ViewAction setViewVisibitity(final boolean value) {
    return new ViewAction() {
        @Override
        public Matcher<View> getConstraints() {
            return null;
        }

        @Override
        public String getDescription() {
            return "Show / Hide View";
        }

        @Override
        public void perform(UiController uiController, View view) {
            view.setVisibility(value ? View.VISIBLE : View.GONE);
        }
    };
}

然后:

onView(withId(R.id.button_group)).perform(setViewVisibitity(false));

onView(withId(R.id.name)).perform(scrollTo(), typeText(name), closeSoftKeyboard());

随后,您可以随时恢复button_group的可见性:

onView(withId(R.id.button_group)).perform(setViewVisibitity(true));

尝试一下。由于button_group的可见性设置为GONE,因此它不应干扰滚动。