Доброе время суток!
Тестирую с помощью UI automator на “родном” эмуляторе Google, для получения структуры страницы пользуюсь UI Automator Viewer.
продолжаю разбираться с UI automator и столкнулась с проблемой: невозможно кликнуть по кнопке в выпадающем PopUp окне.
Тест кейс:
Вхожу на сайт
Делаю необходимые ассерты
Нажимаю на кнопку “Пользователь”, после чего выпадает PopUp окно с функцией Log Out
Мне необходимо нажать на Log Out, но сделать я этого не могу, так как UI Automator Viewer вообще “не видит” выпадающего окна (как минимум в структуре страницы оно не появляется).
Взяла у девелоперов название класса и ID нужной кнопки, но все равно получила на выходе ошибку: INSTRUMENTATION_STATUS: stack=com.android.uiautomator.core.UiObjectNotFoundExcep
tion: UiSelector[CLASS=android.widget.LinearLayout, RESOURCE_ID=testing.android:id/action_sign_out]
Привет, дело в том, что UI automator не очень хорошо ладит с webview и поэтому он действительно много может не видеть. Вы просто должны понимать, что это инструмент для тестирования андроидных апликух, а не для тестирования сайтов.
В том то и главная проблема - элемента нет в иерархии UI automator Viewer. Я открываю в эмуляторе попап-окно, загружаю картинку во Viewer, окно отображается на экране вьювера, но его словно не существует, вьювер видит элементы под ним, но не само окно.
по поводу DPAD-кнопок не могу ответить, так как пока запускаю тесты только на “родном” андроидовском эмуляторе без кнопок. И попутно ищу другой, более толковый эмулятор для запуска тестов…
Просто здесь CLASS=android.widget.LinearLayout, это контейнер. А кнопка скорей всего будет либо Button, либо ImageView.
Т.е. элемента типа LinearLayout с id ‘action_sign_out’ на экране нет, а элемент другого типа может и быть. Лучше вовсе без привязки к типу в данном случае искать — id достаточно уникальный.
private void exitToMainWindow() throws UiObjectNotFoundException {
//элемент, по нажатию на который выпадает попап
UiObject badgeButton = new UiObject(new UiSelector() .className("android.widget.ImageView").resourceId("testing.android:id/badge_button"));
badgeButton.click();
UiObject logOutButton = new UiObject(new UiSelector() .className("android.widget.LinearLayout").resourceId("testing.android:id/action_sign_out"));
logOutButton.clickAndWaitForNewWindow();
}
И логаут девелоперы почему-то сделали не в виде кнопки, а в виде линка. Они предлагают его временно “заблокировать” для теста, т.е. по нажатию на нее апликация не будет выходить из приложения, может так можно будет посмотреть что “у нее в животике”?
В Андроид-эмуляторе справа от изображения экрана, как правило есть кнопки Home, Power и т.д. — и там же есть курсорные клавиши.
У меня в эмуляторе к этим кнопкам стоит надпись DPAD not enabled in AVD