[英]Android Espresso : How to perform an action when the view is displayed on the screen?
我想向我的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())
}
但是我得到一个错误,即视图不会按层次结构退出,这是正常的,因为在数据充电时可见性已设置为消失。
@JMJ,这是检查视图是否显示在视图中的良好做法。 它还避免了错误,您可以检查视图是否显示,如下例所示。
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()));
您可以添加一个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()));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.