В моих тестах пользовательского интерфейса я устанавливаю текст двух UiObjects в верхней части экрана и нажимаю на третий объект UiObject, расположенный в нижней части экрана. На некоторых устройствах (например, мой Nexus 6 работает 5.0) это работает отлично. Текст установлен, UiObject в нижней части экрана по-прежнему отображается, и он успешно нажат.Обнаружение или подавление клавиатуры в тестах UiAutomator
На других устройствах (например, мой Nexus 4 работает 4.4) вызов setText на UiObjects вызывает мягкую клавиатуру, которая скрывает третий UiObject в нижней части экрана и препятствует его нажатию.
Я рассмотрел использование UiDevice.pressBack()
, чтобы убрать клавиатуру, но проблема в том, что клавиатура отображается на некоторых устройствах, а не на других. Нажатие на устройства, которые не показывают клавиатуру, вызывает другое поведение, которое приводит к сбою теста.
Я также рассмотрел использование UiDevice.pressEnter()
в качестве решения. Я решил, что это отклонит клавиатуру, если она будет видна, и ничего не сделает, если это не так (лучше всего из двух миров). Проблема в том, что клавиатура, показанная UiAutomator, когда она запускает мои тесты, не имеет кнопки «enter», у нее есть «следующая» кнопка. Это противоречит тому, как у меня есть фактическая настройка элементов пользовательского интерфейса в коде. Когда я тестирую это вручную, клавиатура показывает кнопку «Ввод», как ожидалось. Однако, поскольку UiAutomator видит «следующую» кнопку, это функциональность, которую она выполняет. Фокус просто переходит к следующему объекту UiObject, и клавиатура все еще видна.
Так что я пытаюсь удалить клавиатуру, если она видна, не рискуя нажимая кнопку «Назад», если это не так. Есть ли способ определить, показывает ли он или нет? Или еще лучше, никогда не показывать это в первую очередь?
Я надеялся на что-то, что я мог бы сделать в коде, так как мои тесты - это всего лишь несколько из многих, которые запускаются на устройстве. Думаю, я мог бы поместить мой в отдельный пакет и запустить команды adb перед моими испытаниями, а затем снова включить пакеты клавиатуры. Это не совсем то, на что я надеялся, но это лучший вариант. Благодарю. –