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

red*_*rom 3 android automated-tests android-espresso

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

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

android.support.test.espresso.PerformException: 
Error performing 'single click' on view 'with id: com.example.xxx.test:id/txtField2'.
Run Code Online (Sandbox Code Playgroud)

下面是测试方法:

  @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
    }
Run Code Online (Sandbox Code Playgroud)

方法如下:

public void insertTextIntoInput(Integer inputId, String text) {
    onView(withId(inputId)).perform(typeText(text));
}
Run Code Online (Sandbox Code Playgroud)

布局如下:

<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>
Run Code Online (Sandbox Code Playgroud)

我该如何解决它,我做错了什么?

Be_*_*ive 5

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

closeSoftKeyboard() 在第一个输入字段中输入文本时的 ViewAction。

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