我想将仪器测试添加到我的Android应用中。
有一个登录屏幕,该屏幕首先执行对特定数据的加载,成功后将向用户显示身份验证。表单(用户名和密码)。
我想对EditText小部件执行操作,例如 typeText ,如下所示:
@Test
fun agnetlogin() {
onView(withId(R.id.edt_login)).perform(typeText(loginToBeTyped), closeSoftKeyboard())
onView(withId(R.id.edt_password)).perform(typeText(passwordToBeTyped), closeSoftKeyboard())
onView(withId(R.id.btn_sign_in)).perform(click())
}
但是我得到一个错误,即视图没有按层次结构退出,这是正常的,因为在数据充电时可见性被设置为消失。
答案 0 :(得分:0)
@ J.M.J,这是检查视图是否显示在视图中的良好做法。它还可以避免错误,您可以按照以下示例检查视图是否显示。
onView(withId(R.id.my_view))
.perform(click())
.check(matches(isDisplayed()));
或者如果您知道该视图已经显示,则可以使用特定名称进行检查,例如
onView(withId(R.id.my_view))
.check(matches(withText("Hello Espresso!")))
.perform(click())
.check(matches(isDisplayed()));
答案 1 :(得分:0)
您可以添加一个Idlingrecource管理器,该管理器将等到您的输入字段加载完毕,然后对其执行操作:
https://medium.com/azimolabs/wait-for-it-idlingresource-and-conditionwatcher-602055f32356
一种快速而肮脏的解决方案可能是在代码前面睡一会儿(例如5秒钟):
Thread.sleep(5000);
onView(withId(R.id.my_view))
.perform(click())
.check(matches(isDisplayed()));