【问题标题】:How to click contextual action bar item using Espresso framework如何使用 Espresso 框架单击上下文操作栏项
【发布时间】:2015-04-29 02:57:52
【问题描述】:

我正在编写一个测试用例,它长按我的 ListView 中的一个项目(由 CursorAdapter 支持),它将拉出一个上下文操作栏并有一个允许用户删除该项目的菜单项。

我使用以下代码:

public void testDeleteFirstAccount(){
    // Long click
    onData(is(instanceOf(Cursor.class))).atPosition(0).perform(longClick());

    // Click delete menu item
    onView(withId(R.id.action_delete_account)).perform(click());

    // Find alert button with text
    onView(withText("Yes")).perform(click());
}

但是,我无法单击该按钮,因为我认为测试运行得太快了。我收到以下错误:

android.support.test.espresso.PerformException:执行错误 '单击'视图'与ID: com.example.android.cashcaretaker:id/action_delete_account'。

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

我认为测试太快的原因是如果我在长按后添加Thread.sleep(),一切都会正常工作。我这样做只是为了验证我的怀疑,我不确定停止 UI 是否是前进的正确方法。

我也尝试过添加getInstrumentation().waitForIdleSync(),但没有成功。

我做错了什么吗?使用 Espresso 点击 CAB 项目的正确方法是什么?

【问题讨论】:

    标签: java android android-actionbar android-espresso contextual-action-bar


    【解决方案1】:

    在 Espresso 尝试单击 ContextualActionBar 项时,视图可能仍在动画中。如果你设置了超时时间,动画有时间完成,并且在点击执行时视图完全显示。

    您是否尝试过按照Espresso Setup guide 中的说明禁用测试设备中的动画?

    【讨论】:

    • 我没有尝试关闭动画,但是一旦我这样做了,一切都很好。谢谢!
    猜你喜欢
    • 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
    相关资源
    最近更新 更多