Android Espresso:当视图显示在屏幕上时,如何执行操作?

Android Espresso:当视图显示在屏幕上时,如何执行操作?,android,automated-tests,android-espresso,Android,Automated Tests,Android Espresso,我想将仪器测试添加到我的Android应用程序中 有一个登录屏幕,首先对某个数据执行加载,当加载成功时,向用户显示auth。表单(用户名+密码) 我想对EditText小部件执行一个操作,如typeText如下所示: @Test fun agnetlogin() { onView(withId(R.id.edt_login)).perform(typeText(loginToBeTyped), closeSoftKeyboard()) onVie

我想将仪器测试添加到我的Android应用程序中

有一个登录屏幕,首先对某个数据执行加载,当加载成功时,向用户显示auth。表单(用户名+密码)

我想对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())
    }

但是我得到一个错误,视图没有在层次结构中退出,这是正常的,因为当数据充电时,可见性设置为“消失”。

@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()));

@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()));

您可以添加IdlingResource管理器,该管理器将等待输入字段加载后再对其执行操作:

一个快速而肮脏的解决方案可能是在代码前面放置一个睡眠(例如5秒钟):

Thread.sleep(5000);

onView(withId(R.id.my_view))
.perform(click())
.check(matches(isDisplayed()));

您可以添加IdlingResource管理器,该管理器将等待输入字段加载后再对其执行操作:

一个快速而肮脏的解决方案可能是在代码前面放置一个睡眠(例如5秒钟):

Thread.sleep(5000);

onView(withId(R.id.my_view))
.perform(click())
.check(matches(isDisplayed()));