TypeText不起作用

时间:2017-01-10 11:13:56

标签: android android-espresso

尝试用浓咖啡测试我的签到。如果我单击我的字段,那么所有工作都很顺利。

 ViewInteraction linearLayout = onView(
            allOf(childAtPosition(
                    allOf(withId(R.id.nameEditText),
                            childAtPosition(
                                    withId(R.id.inputLayout),
                                    0)),
                    0),
                    isDisplayed()));
    linearLayout.check(matches(isDisplayed()))
            .perform(click());

但如果我需要在这个领域加上一些文字,我有一些问题:

ViewInteraction linearLayout = onView(
            allOf(childAtPosition(
                    allOf(withId(R.id.nameEditText),
                            childAtPosition(
                                    withId(R.id.inputLayout),
                                    0)),
                    0),
                    isDisplayed()));
    linearLayout.check(matches(isDisplayed()))
            .perform(typeText("SomeName"));

然后得到下一个错误:

  

android.support.test.espresso.PerformException:在视图上执行'type text(SomeName)'时出错'(父级位置0的子级(id为:com.fentury.android:id / nameEditText,位于0的子级)在父母的id:com.fentury.android:id/inputLayout)

如果我尝试这样做:

 ViewInteraction appCompatEditText = onView(
            allOf(withId(R.id.nameEditText),
                    withParent(withId(R.id.inputLayout)), isDisplayed()));
    appCompatEditText.check(matches(isDisplayed()))
            .perform(click()).perform(typeText("Dog"));

我有同样的错误:

  

android.support.test.espresso.PerformException:在视图上执行'type text(Dog)'时出错'(id:com.fentury.android:id / nameEditText并且父匹配:id:com.fentury。 android:id / inputLayout并在屏幕上显示给用户)'

我如何解决这个错误?

1 个答案:

答案 0 :(得分:3)

您使用的是TextInputLayout吗?

以下版本适用于TextInputLayout。

    onView(
            allOf(
                    isDescendantOfA(withId(R.id.nameEditText)),
                    isAssignableFrom(EditText.class)))
            .perform(typeText("some text"));