2014-01-31 30 views
1

我的目標是讓猴子訪問給定的android應用程序的所有頁面/活動。我目前使用Chimpchat和我的第一個步驟 如下:Chimpchat自動旅程

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 - 對於每個字符串(使用迭代器它)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) 

異常,如果任何人都可以指出我的錯誤(S)或我指向另一種方法,這將不勝感激!

+0

它看起來並不像你已經開始一個活動,所以沒有應用程序尚未爬行。但是關於如何在ChimpChat中開始這項活動,我仍然試圖弄清楚這一點。這是應該這樣做的方法。 '[email protected] String uri,@Nullable String action,@Nullable String data,@Nullable String mimeType,Collection 類別,Map extras,@Nullable String組件,int標誌)' – darkrat

回答

0

我認爲問題在於沒有運行Activity。 正如我上面評論,你可能能夠使用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()); 

這將使用亞行shell來啓動應用程序。 mPackage =程序包路徑(com.company.application)和mActivity =活動(.MyActivity)。從那裏你應該可以mDevice.getHierarchyViewer()mDevice.getViewIdList()

1

我認爲Robotium會更適合這種類型的測試。根據我的經驗,使用adb/MonkeyRunner訪問遠程設備上的視圖並不十分可靠。此外,Robotium還有許多很酷的功能,可以很容易地集成到現有的測試套件中。

+0

感謝您的回答。 Robotium是一個很好的工具(和Selendroid一樣),但它需要放棄測試apk的事實對我來說是不可行的。我必須在沒有密鑰存儲和沒有固定設備的情況下完成這項工作。 – AdrienG

相關問題