繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM