Как нажать действие редактора на эспрессо

Как вы нажимаете клавишу действия редактора на программной клавише Android, используя Espresso? Я старался:

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

Но это не работает. Есть идеи?


person Jezer Crespo    schedule 07.01.2015    source источник


Ответы (4)


«pressKey» ожидает KEYCODE, а не FLAG. Так что pressKey(KeyEvent.FLAG_EDITOR_ACTION) на самом деле не имеет смысла и точно не сработает.

Но есть ViewAction для нажатия действия редактора (IME), см. статический метод: ViewActions#pressImeActionButton()

Подробности реализации Espresso 1.x можно посмотреть здесь:

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

person yogurtearl    schedule 07.01.2015
comment
@yogutearl: Ссылка дает 404. Если возможно, обновите ее. - person Sagar Trehan; 03.10.2016
comment
Ошибка 404 по ссылке исправлена. - person yogurtearl; 20.02.2021

Поскольку это самый популярный результат поиска в Google для тех, кто ищет, как отправлять ключи с помощью эспрессо, я хотел бы привести пример: onView(withId(R.id.your_id)).perform(ViewActions.pressKey(KeyEvent.YOUR_KEY));

person HRVHackers    schedule 08.03.2017

Чтобы отправить общее нажатие клавиши в Espresso, используйте что-то вроде этого:

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

Это, например, отправит событие аппаратной кнопки меню в любой вид, чтобы открыть меню переполнения в ActionBar/ToolBar.


Примечание. Чтобы быстро добавить импорт для этих методов, поместите мигающий курсор на неразрешенный метод, затем выполните Android Studio ➔ СправкаНайти действие ➔ найдите "show context action" или "show intention action" ➔ нажмите на вариант результата ➔ появится всплывающее окно ➔ нажмите "Import static method ...". Вы также можете назначить сочетание клавиш для «Показать контекстные действия». Дополнительная информация здесь. Другой способ — включить "Add unambiguous imports on the fly" в настройках.

person Mr-IDE    schedule 04.07.2018

Принятый ответ был для меня не ясен, а другие не работают. Фактическое решение работает, как показано ниже

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

где search_box — это идентификатор моего текста редактирования.

person Ishaan    schedule 12.07.2020