android - scrollTo 在带有 alpha 的 View 后面时不起作用

标签 android user-interface testing android-espresso

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

我想避免使用 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名称。如果屏幕很大,它工作正常,但如果它很小,并且编辑文本名称位于具有 alpha 背景的 button_group 后面,它总是会失败。

最佳答案

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

首先,您需要执行可见性更改的自定义 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,因此它不应干扰滚动。

关于android - scrollTo 在带有 alpha 的 View 后面时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56071694/

相关文章:

c++ - 通过迭代器使用连接、信号和槽

c# - 文本框滞后于大量数据? (银光 4)

ios - 使用 Mac Hotspot 进行移动设备的自动化测试

android - 多个 XHDPI 设备分辨率

android - 使用 "One account per email address"时出现 FirebaseAuthInvalidCredentialsException

java - 如何调整JFrame和JPanel中的大小?

testing - 将时间戳添加到 gradle 测试输出

testing - 我想使用 JMETER 和 Fix users and Time 执行性能测试

android-layout - 在不移动操作栏的情况下在 Activity 之间转换

Android,如何将图像放在另一个图像上?