Android Espresso点击ImageButton点击错误的位置

时间:2017-03-06 13:07:25

标签: android android-espresso

当我尝试点击图片按钮时,我在Android上的espresso UI测试有问题:

我有以下布局:

<LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:background="#FFFFFF">

        <ImageButton
                android:id="@+id/parent_task_button"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="#00000000"
                android:rotation="90"
                android:layout_gravity="center_vertical"
                android:src="@drawable/ic_subdirectory_arrow_left_black_24dp"
                android:paddingRight="10dp"
                android:paddingLeft="12dp"/>

        <View
                android:layout_width="1dp"
                android:layout_height="match_parent"
                android:background="@color/layout_divider"></View>

        <com.mypackage.ui.TasklistItem
                android:id="@+id/parent_task_item"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"/>

    </LinearLayout>

在我的应用中看起来像这样:

enter image description here

在我的espresso测试中,我尝试点击按钮(带箭头的按钮):

onView(withId(R.id.parent_task_button)).perform(click());

但点击无法按预期工作。我逐步完成了(启用了Android“Show Taps”和“Pointer location”开发人员设置),结果是测试没有点击图片按钮的中心,而是点击此处:

enter image description here

...正好位于分隔线上,但不在ImageButton的中心。

如果我用普通按钮替换ImageButton,点击是正确的,测试工作正常! 有谁知道这里的问题是什么或如何解决它?

1 个答案:

答案 0 :(得分:3)

我找到导致问题的那一行(在ImageButton中):

 android:rotation="90"

如果我从图像按钮中删除此旋转,则单击正确位于中间。 所以我的临时修复是旋转drawable本身而不是按钮。

我目前正在深入研究android espresso代码并试图在这里找到错误的代码。 似乎点击坐标的计算是错误的,因为它忽略了旋转,因此计算错误。 如果我找到任何内容,我会更新这篇文章。