Сканер графического интерфейса Android
Кто-нибудь знает хороший инструмент для сканирования графического интерфейса приложения для Android? Я нашел это, но не мог понять, как запустить это...
2 ответа
Лично я не думаю, что было бы слишком сложно создать простой сканер с графическим интерфейсом, используя MonkeyRunner и AndroidViewClient.
Кроме того, вы можете посмотреть uiautomator и UI Testing
Добро это относительный термин. Я не использовал Robotium, но он часто упоминается в этих кругах.
РЕДАКТИРОВАТЬ - Добавлен пример на основе запроса комментария.
Используя MonkeyRunner и AndroidViewClient, вы можете создать иерархию представлений. Я думаю, что AndroidViewClient имеет встроенный механизм для этого, но я написал свой собственный. Этот код пытается создать макет, похожий на тот, который используется командой дерева Linux. space
а также line
переменные используются для установки префикса, добавляемого в каждой строке. Конечно, этот код использует рекурсивный обход в глубину.
def printViewListDepth(view, depth=0):
space = '|' * int(not depth == 0)
space += (' ' * 2 * (depth-1)) + '|' * int(not depth-1 <= 0)
line = '_' * int(not depth == 0) * 2
text = view.getText()
text = text[:10] + int(len(text) > 10) * '...'
print " [*] %s%s%s %s %s" % (
space, line, view.getUniqueId(),
view.getClass().replace('android.widget.', ''), text)
for ch in view.children:
printViewListDepth(ch, depth+1)
Ты звонишь printViewListDepth
следующим образом, используя ViewClient
возвращается AndroidViewClient:
printViewListDepth(viewClient.root)
Обратите внимание, что в приведенной выше реализации класс View
усекается, удаляя "android.widget." и текст View
усекается до 10 символов. Вы можете изменить их в соответствии с вашими потребностями.
Редактировать Сканирование GUI
С AndroidViewClient вы можете запросить, является ли просмотр кликабельным, someView.isClickable()
, Если это кликабельно, вы можете вызвать сенсорное событие на нем, someView.touch()
, Предполагая, что большинство нажатий кнопок открывают различные действия, вам нужно придумать механизм возврата туда, откуда вы пришли, чтобы выполнить рекурсию.
Я полагаю, что это можно сделать с некоторыми усилиями, но вы можете начать с чего-то столь же простого, как нажатие кнопки НАЗАД, device.press('KEYCODE_BACK', MonkeyDevice.DOWN_AND_UP)
, Вам, вероятно, придется разбираться с особыми случаями, связанными с приложением, по мере их возникновения, но это должно привести вас к достойному началу.
Вы можете взглянуть на Testdroid App Crawler. Он доступен в Testdroid Cloud как тип проекта, и вы можете легко запустить его на 15 бесплатных устройствах.