如何在 Espresso 上按下编辑器操作

How to press editor action on Espresso

如何使用 Espresso 按 Android 软键上的编辑器操作键? 我试过:

onView(withId(R.id.test_title)).perform(typeText("Sample Title"), pressKey(KeyEvent.FLAG_EDITOR_ACTION));

但它不起作用..有什么想法吗?

"pressKey" 需要 KEYCODE,而不是 FLAG。所以 pressKey(KeyEvent.FLAG_EDITOR_ACTION) 没有任何意义,肯定不会起作用。

但是有一个用于按下编辑器(IME)动作的ViewAction,见静态方法:ViewActions#pressImeActionButton()

您可以在此处查看 Espresso 1.x 实施细节:

https://developer.android.com/reference/android/support/test/espresso/action/ViewActions.html#pressImeActionButton()

由于这是搜索如何使用 Espresso 发送密钥的人的最高 google 结果,我想提供一个示例:onView(withId(R.id.your_id)).perform(ViewActions.pressKey(KeyEvent.YOUR_KEY));

要在 Espresso 中发送常规按键,请使用如下内容:

onView(isRoot()).perform(pressKey(KeyEvent.KEYCODE_MENU));

例如,这会将硬件菜单按钮事件发送到任何视图,以打开 ActionBar/ToolBar 中的溢出菜单。


注意:要快速添加这些方法的导入,请将闪烁的光标放在未解析的方法上,然后执行 Android Studio ➔ HelpFind Action ➔ 搜索 "show context action""show intention action" ➔ 点击结果选项 ➔ 弹出 window 会出现 ➔ 点击 "Import static method ...".您还可以为 "Show Context Actions" 分配键盘快捷键。 More info here。另一种方法是在设置中启用 "Add unambiguous imports on the fly"

接受的答案对我来说不清楚,其他人也不起作用。 实际的解决方案如下

Espresso.onView(ViewMatchers.withId(R.id.search_box))
        .perform(ViewActions.pressImeActionButton())

其中 search_box 是我的编辑文本的 ID。