Appium: сабмит по нажатию на кнопку 'Done' на клавиатуре.

appium
Теги: #<Tag:0x00007fedb9629d88>

(tvlad) #1

В дизайне формы авторизации отсутствует кнопка “Сабмит”. Предполагается, что вход происходит по нажатию на кнопку ‘Done’ на клавиатуре. Код ждет событие IME_ACTION_DONE.
Пробовал варианты:

driver.sendKeyEvent(AndroidKeyCode.ENTER);
driver.sendKeyEvent(66); (по сути тоже самое, что и первый вариант)
signUp.password_TxField.sendKeys(Keys.ENTER); (посылает Enter в конкретное поле)
Все эти варианты посылают ENTER в тектовое поле, но не емулируют IME_ACTION_DONE, т.е авторизоваться я не могу.
Долго гуглил эту тему, ничего не нашел. Буду благодарен за совет.


(Dmitry Cheremushkin) #2

Добрый день.

К сожалению, в данный момент — никак иначе, кроме тапа по координатам кнопки.


Варианты:

  • добавить в приложение авторизацию по ENTER key (достаточно только в debug-версию);
  • завести Appium Issue и ждать, пока починят…

(tvlad) #3

Спасибо, в принципе так и сделал. Неудобство в том, что координаты надо расчитывать для каждого устойства из списка поддерживаемых.


(Dmitry Cheremushkin) #4

Да. Либо можно написать функцию, который будет получать размеры экрана, а также вычитать высоту navigation bar, что внизу, с учетом dpi.


(brbrr) #5

Вот тут можно прикрутить OCR движок. распознавания текста с картинки и получения координат нужного слова/символа. + удобно асертить тост сообщения


(Dmitry Cheremushkin) #6

А попробуйте еще использовать функцию driver.hideKeyboard() из официальной библиотеки java-client. Она по умолчанию жмет “Done”.