Как получить «локаторы» для автоматизации тестирования Android приложений |
20.06.2012 12:14 |
Автор: Андрей Дзыня В рамках курса Автоматизация тестирования Android приложений я получил интересный вопрос: как узнать "локатор" объекта в Android приложении? Есть ли какой-то инструмент типа “firebug”, чтобы это посмотреть? Я решил ответить на этот вопрос в публичной форме, так как тема действительно интересная и практически не освещена в интернете. Для того, что понять к какому элементу Android приложения обращаться, есть три способа:
Предлагаю начать с самого простого способа – использования утилиты APKAnalyzer.Первым делом нужно скачать это приложение, которое вообще весьма полезно и им должен научиться владеть каждый разработчик или тестировщик приложений для Android. https://github.com/sonyericssondev/ApkAnalyser/downloads Запускаем программу, настраиваем, прописывая пути к ANDROIDSDK и тестируемому приложению в виде APK файла. File - > SetPath Подтверждаем выбор путем нажатия кнопки ОК, после чего на главном экране жмем кнопку “обновить” (самая левая, с иконкой в виде круга). Инструмент проанализирует внутренности APK файла и покажет его содержимое в удобном для анализа виде. Чтобы получить доступ к ресурсу, разворачиваем папки в представлении APK-файла:
В самом низу видно, к какому layout.xml принадлежит кнопка. Другими словами, на каком экране она отображается. Открывая note_editor видим название Activity которое используется для отображения элементов: Мы получили интересующую нас информацию для использования в тестовом проекте. Нахождение объектов путем анализа исходного кода приложения:Второй подход более прагматичен, и применяется разработчиками и тестировщиками, которые не боятся залезть во внутренности кода Android-приложения. Как мы уже видели на предыдущем примере, в состав любого Android-приложения входят две важные папки: После компиляции приложения доступ к ресурсам осуществляется через вспомогательный класс R.strings. Итак, если нам нужно нажать на кнопку Add note - ищем в strings.xml текст Add note, смотрим имя ресурса и вызываем из теста. solo.clickOnMenuItem(solo.getString(R.id.add_note));
Класс R в данном случае должен быть импортирован из пакета исходного кода приложения, а не тестового проекта. Подобным же образом работаем и с остальными ресурсами. Если нужно получить доступ к объекту не по тексту, а по ID - делаем следующее. В папке layout находим xml-файл с описанием нужного нам экрана, найти в нём ищем нужный id. Кроме того, в Eclipse есть возможность просмотреть Graphicallayout, где можно подсмотреть id элемента нажатием правой клавишей мыши. Обращение к элементу по идентификатору выполняется следующим образом: solo.getView(R.id.note); Использование HierarchyView в EclipseIDE для получения полной картины "локаторов" в Android приложенииЭто, наверное, самый загадочный способ. Для того чтобы получить полную карту приложения в графическом виде нужно сделать следующее. ВыводКакой из способов использовать - решать Вам. Я предпочитаю второй, с прямым доступом в исходный код. Это требует понимания внутренней структуры приложения, но это в любом случае необходимо, чтобы качественно автоматизировать тестирование Android приложения. Спасибо за внимание! Обсудить в форуме |