2014-01-31 3 views
1

Моя цель - заставить обезьяну посетить все страницы/действия данного приложения для Android. настоящее время я использую Chimpchat и мои первые шаги являются следующие:Chimpchat automatic travel

1 - Подключение к устройству:

TreeMap<String, String> options = new TreeMap<String, String>(); 
options.put("backend", "adb"); 
options.put("adbLocation", ADB); 
mChimpchat = ChimpChat.getInstance(options); 
mDevice = mChimpchat.waitForConnection(TIMEOUT, ".*"); 
mDevice.wake(); 

2 - Получение списка идентификаторов Вид:

mDevice.getViewIdList(); 

3 - Для каждой строки (с использованием iterator it) ID содержится в списке, возвращаемом getViewIdList(), я хотел бы получить доступ к Class, Text if любой, границы, и т.д. ...

while (it.hasNext()) { 
     String s = it.next(); 
     System.out.println(s + " : "); 
     try { 
      IChimpView v = mDevice.getView(By.id(s)); 
      System.out.println(v); 
      System.out.println(v.getViewClass() + " : "); 
      if (v.getViewClass().toString() == "TextView") { 
       System.out.print(v.getText()); 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 


    } 

я получаю исключение на

v.getViewClass() 


com.android.chimpchat.core.ChimpException: Node with given ID does not exist 
at com.android.chimpchat.ChimpManager.queryView(ChimpManager.java:415) 
at com.android.chimpchat.core.ChimpView.queryView(ChimpView.java:53) 
at com.android.chimpchat.core.ChimpView.getViewClass(ChimpView.java:96) 
at JavaMonkey.listViewsID(JavaMonkey.java:80) 
at JavaMonkey.main(JavaMonkey.java:114) 

Если кто-то может указать свою ошибку (ы) или указать мне на другой подход, это было бы весьма признателен !

+0

Не похоже, что вы уже начали свою деятельность, поэтому пока не было приложения для сканирования. Однако о том, как начать работу в ChimpChat, я все еще пытаюсь понять это. Вот этот метод, который должен был это сделать. '[email protected] String uri, @Nullable String action, @Nullable String data, @Nullable String mimeType, Collection категорий, Map extras, @Nullable String, int flags)' – darkrat

ответ

0

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

StringBuilder builder = new StringBuilder(); 
builder.append("am start -a android.intent.action.MAIN -n "); 
builder.append(mPackage).append("/").append(mActivity); 
String output = mDevice.shell(builder.toString()); 

Это будет использовать ADB оболочку для запуска приложения. mPackage = путь пакета (com.company.application) и mActivity = активность (.MyActivity). Оттуда вы должны быть в состоянии mDevice.getHierarchyViewer() или mDevice.getViewIdList()

1

Я думаю, что Robotium будет намного лучше подходит для такого типа тестирования. Доступ к просмотрам на удаленном устройстве с использованием adb/MonkeyRunner не очень надежен в моем опыте. Кроме того, Robotium обладает множеством интересных функций и может быть легко интегрирован в существующий набор тестов.

+0

Спасибо за ваш ответ , Robotium - отличный инструмент (как Selendroid), но тот факт, что он должен уйти в отставку тестируемого apk, - не для меня. Я должен выполнить эту работу без хранилища ключей и без укоренившегося устройства. – AdrienG