尝试用浓咖啡测试我的签到。如果我单击我的字段,那么所有工作都很顺利。
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并在屏幕上显示给用户)'
我如何解决这个错误?
答案 0 :(得分:3)
您使用的是TextInputLayout吗?
以下版本适用于TextInputLayout。
onView(
allOf(
isDescendantOfA(withId(R.id.nameEditText)),
isAssignableFrom(EditText.class)))
.perform(typeText("some text"));