Недавние приложения на UiAutomator

Сейчас я работаю с Android UiAutomator для тестирования пользовательского интерфейса в своем приложении для Android. В моем приложении есть функция, которая требует от пользователя подтверждения электронной почты для продолжения, поэтому я пытаюсь сделать это следующим образом: после достижения этой функции -> getUiDevice.pressHome -> Браузер -> попытаться войти в систему электронной почты -> PressHome снова - > Нажмите RecentApps, затем я застрял здесь, я не могу нажать на свои приложения, чтобы вернуться к ним снова. Я пробую другой способ, щелкнув значок моего приложения, но оно снова запускает мое приложение, а не в том состоянии, в котором оно было раньше. Может ли кто-нибудь предложить мне решение для этого? Любая помощь приветствуется.

Заранее спасибо.


person DucTran    schedule 08.05.2013    source источник


Ответы (4)


Попробуй это :

UiObject appBackground = new UiObject(new UiSelector().description("ABC"));
appBackground.click();

Он не показывал никакого описания через команду «uiautomatorviewer», но это сработало для меня.

person Smriti    schedule 06.12.2013
comment
привет, Смрити, я больше этого не делал (по крайней мере, на данный момент), но если я снова застряну в этом деле в будущем, я попробую твой метод. Спасибо, что показали :) - person DucTran; 23.12.2013
comment
@DucTran, пожалуйста, примите этот ответ. Он отлично работает на эмуляторе с Marshmallow и Nexus 6P с Nougat. Я думаю, что это правильный ответ. - person tomrozb; 21.09.2016
comment
новый UiOject(UiSelector) устарел — вместо этого используйте UiDevice.findObject(UiSelector). - person nasch; 30.08.2018
comment
Этот метод также не будет работать на Android 9 и более поздних версиях, где в последних приложениях также есть ярлыки для общих приложений. Этот метод вместо этого найдет ярлык, щелкнет по нему и эффективно запустит приложение, как если бы вы нажали значок приложения. - person Mike Collins; 04.10.2019

Мне удалось создать это поведение с помощью:

fun backgroundAndForeground() {
    val device = UiDevice.getInstance(getInstrumentation())
    device.pressHome()
    // Pressing app switch two times makes the last app put on background come to foreground.
    device.pressKeyCode(KeyEvent.KEYCODE_APP_SWITCH)
    device.pressKeyCode(KeyEvent.KEYCODE_APP_SWITCH)
}
person Tiago Dávila    schedule 02.11.2020

В этом случае я думаю, что Android возобновляет работу приложения только при нажатии на недавнее изображение приложения. Он не работает при нажатии отображаемого текста или значка приложения. Итак, нам нужно щелкнуть изображение вашего приложения в списке последних приложений. В это время вам нужно написать, как показано ниже. Я всегда так делаю для подобных случаев.

// Take all image view by class type and click by instance no.
new UiObject(new UiSelector().className("android.widget.ImageView").instance(3)).click();

Вам нужно подсчитать номер экземпляра вашего недавнего просмотра изображения приложения. Не изображение значка приложения в последнем представлении прокрутки приложения. Пожалуйста, попробуйте это. Спасибо.

person R.Katnaan    schedule 27.11.2014

Я потратил на это полдня и пришел к выводу, что мне нужно выпустить device.click(). Поскольку мой вариант использования заключается в том, что мое приложение было запущено последним (не переключаясь на браузер, как вы), я могу безопасно щелкнуть середину экрана, и оно всегда будет работать.

Если вы предпоследнее запущенное приложение, вы, вероятно, можете сделать x: 0 и y: device.displayHeight/2.

Я не проверял это на многих операционных системах, только на 9.

person Mike Collins    schedule 03.10.2019