2014-01-31 2 views
1

내 목표는 원숭이가 특정 안드로이드 응용 프로그램의 모든 페이지/활동을 방문하도록하는 것입니다. 다음과 같은 나는 현재 Chimpchat 내 첫 단계를 사용하고 은 다음과 같습니다Chimpchat automatic journey

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 -보기 ID의 목록 가져 오기 :

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 엑스트라, @Nullable String 구성 요소, int 플래그)' – 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