Android中的Espresso - 如何将文本插入更多文本输入中?

时间:2015-08-19 14:51:35

标签: android automated-tests android-espresso

我正在尝试将文本设置为同一活动的文本输入(逐个)。

问题是第一次输入是正确填充文本但在第二次输入时我得到异常消息。

android.support.test.espresso.PerformException: 
Error performing 'single click' on view 'with id: com.example.xxx.test:id/txtField2'.

以下是测试方法:

  @Test
    public void buttonShouldUpdateText(){
        this.clickOnActionBarMenuIcon();
        this.clickOnActionBarMenuItem(10);
        this.clickOnButton();
        this.checkTextOnActivity("Hello world!");
        this.insertTextIntoInput(R.id.txtFieldOne, "Hello world!"); // Works fine 
        this.insertTextIntoInput(R.id.txtFieldTwo, "Hello world2"); // Throws exception
    }

方法如下:

public void insertTextIntoInput(Integer inputId, String text) {
    onView(withId(inputId)).perform(typeText(text));
}

布局如下:

<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:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context="activities.SecondActivity">

    <TextView android:text="@string/hello_world"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/text1SecondView" />

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/txtFieldOne"
        android:layout_below="@+id/text1SecondView"
        android:layout_alignParentStart="true"
        android:layout_marginTop="103dp"
        android:layout_alignParentEnd="true" />

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/txtFieldTwo"
        android:layout_marginTop="51dp"
        android:layout_below="@+id/txtFieldOne"
        android:layout_alignParentStart="true"
        android:layout_alignParentEnd="true" />

</RelativeLayout>

我如何解决它以及我做错了什么?

2 个答案:

答案 0 :(得分:4)

您很可能有一个覆盖编辑文本的键盘。尝试用

关闭它 在第一个输入字段中输入文本时,

closeSoftKeyboard() ViewAction。

请记住,closeSoftKeyboard()不会等待键盘动画停止:https://code.google.com/p/android-test-kit/issues/detail?id=79

答案 1 :(得分:0)

我使用以下代码解决了这个问题,该代码正在启用​​动画Too:

include/include_once/require/require_once