Как отключить мягкую клавиатуру в тесте создания реактивного ранца?
Я пишу тесты для экрана создания реактивного ранца, на котором есть текстовое поле. В моем тесте я хочу ввести некоторый текст в поле, затем закрыть программную клавиатуру, а затем нажать кнопку, скрытую под программной клавиатурой. Однако я не могу найти способ отключить мягкую клавиатуру в тестах создания реактивного ранца. Я пробовал выполнить «performImeAction», но это не отменяет клавиатуру, даже если вы нажмете клавишу IME на программной клавиатуре при фактическом взаимодействии с этим текстовым полем, клавиатуру закроют.
Я хочу иметь возможность сделать это, но в тесте компоновки:
onView(withId(R.id.text_field)).perform(typeText("100"), closeSoftKeyboard())
Мой текущий код создания, вводит «100» в поле, а затем выдает ошибку:
composeTestRule
.onNodeWithTag(TEXT_FIELD_TAG)
.performTextInput("100")
composeTestRule
.onNodeWithTag(TEXT_FIELD_TAG)
.performImeAction() <------------- This fails
Сообщается об ошибке:
java.lang.AssertionError: Failed to perform IME action as current node does not specify any.
Semantics of the node:
Node #48 at (l=0.0, t=748.0, r=788.0, b=1141.0)px, Tag: 'TEXT_FIELD_TAG'
ImeAction = 'Default'
EditableText = '100'
TextSelectionRange = 'TextRange(3, 3)'
Focused = 'true'
Actions = [GetTextLayoutResult, SetText, SetSelection, OnClick, OnLongClick, PasteText]
MergeDescendants = 'true'
Has 7 siblings
1 ответ
Чтобы отключить встроенную клавиатуру устройства, попробуйте использоватьEspresso.closeSoftKeyboard()