【问题标题】:How to scroll down and perform a click in a button with espresso testing?如何通过浓缩咖啡测试向下滚动并单击按钮?
【发布时间】:2017-01-10 10:52:49
【问题描述】:

我有这个应用程序,我正在测试我需要登录的地方,然后它转到另一个活动,然后它转到另一个我可以注销的活动。问题是我的注销按钮位于ScrollView 的底部,并且在屏幕上看不到,而 espresso 也找不到该按钮。我需要先滚动,然后单击按钮。你能告诉我如何滚动然后点击按钮吗?

@Before
    public void init() {
        // Specify a valid string.
        loginText = "something";
        passwordText = "something";
    }

    @Test
    public void loginAction() {

        mBrowserActivityMonitor = getInstrumentation().addMonitor(MainActivity.class.getName(), null, false);

        // Type text and then press the button.
        onView(withId(R.id.editText_username))
                .perform(typeText(loginText), closeSoftKeyboard());
        onView(withId(R.id.editText_password))
                .perform(typeText(passwordText), closeSoftKeyboard());
        onView(withId(R.id.button_login)).perform(click());

        Activity activity = mBrowserActivityMonitor.waitForActivityWithTimeout(10000);

        onView(withId(R.id.button_left)).perform(click());

        Activity activity2 = mBrowserActivityMonitor.waitForActivityWithTimeout(10000);


        onView(withId(R.id.button_logout)).perform(click()); **//does not recognize**

        Activity activity3 = mBrowserActivityMonitor.waitForActivityWithTimeout(10000);
        assertNotNull(activity3); //To see if activity 2 (Profile) is opened

这是错误日志:

原因:java.lang.RuntimeException: Action will not be executed 因为目标视图与以下一项或多项不匹配 约束: 至少 90% 的视图区域会显示给用户。

【问题讨论】:

    标签: android unit-testing testing android-espresso


    【解决方案1】:
    onView(withId(R.id.button_logout)).perform(scrollTo(), click());
    

    如果您正在使用的视图位于 ScrollView(垂直或水平)内,请考虑使用 scrollTo() 来显示需要显示视图的前面操作(如 click() 和 typeText())。这可确保在继续执行其他操作之前显示视图:

    onView(...).perform(scrollTo(), click());

    注意:如果视图已经显示,scrollTo() 将不起作用,因此您可以在由于屏幕尺寸较大而显示视图的情况下安全地使用它(例如,当您的测试在更小和更大的屏幕上运行时)决议)。

    您可以查看他们的文档:https://google.github.io/android-testing-support-library/docs/espresso/basics/index.html#performing-an-action-on-a-view

    【讨论】:

    • 这对我没有帮助。它说它没有找到 button_logout id
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多