下面是我收集到的資料.Delphi xe7 也有這樣的工具,路徑如下:
E:\Delphi XE7\Documents\Embarcadero\Studio\15.0\PlatformSDKs\adt-bundle-windows-x86-20131030\sdk\tools
直接雙擊 uiautomatorviewer.bat 文件,或者 hierarchyviewer.bat 都可以。至於怎么用呢,我還沒有用過啊,不過本文中也有收集到使用方法,可以參考一下。
我們其實還可以使用DDMS工具里的Dump View Hierarchy For UI Automator 去分析微信UI結構,這個方法也是我后面才發現的,比上面的代碼更有效,如下圖:
dump View Hierarchy
http://blog.csdn.net/caiwenfeng_for_23/article/details/38498337
【Android工具】被忽略的UI檢視利器:Hierarchy Viewer
http://blog.csdn.net/ddna/article/details/5527072 //名為hierarchyviewer.bat
百度搜:dump view hierarchy 下載
uiautomatorviewer
http://www.jianshu.com/p/4b376211ad22
http://blog.csdn.net/limonzet/article/details/53229157
啟動sdk目錄tools目錄下的uiautomatorviewer,點擊device screenshot得到當前手機界面的截圖,可以根據此截圖寫測試代碼;
http://www.cnblogs.com/alexthecoder/p/4654961.html
一步一步帶你學uiautomatorviewer
http://www.cnblogs.com/ITGirl00/p/4235466.html
在寫測試用例之前,你最好熟悉待測應用的UI組件(包括視圖views和控件controls)。uiautomatorviewer可以幫助你實現這一點,uiautomatorviewer獲取當前UI界面的快照,提供一個可視化的界面,來檢查布局層次、查看每一個顯示在設備上的UI組件的屬性。在以后的uiautomator測試中,你可以利用uiautomator提供的信息來選擇特定的UI組件。
http://blog.csdn.net/daweibalang717/article/details/51726665
XML布局
http://www.sunnyos.com/article-show-10.html //android獲取app控件id
Delphi XE7 學習筆記(八)Android發布文件
http://blog.sina.com.cn/s/blog_44fa172f0102v2ro.html
http://blog.csdn.net/seu_calvin/article/details/51912738
但是可以通過反編譯apk文件拿到View的ID即可獲取到這個節點
android 怎么獲取控件的id
https://zhidao.baidu.com/question/266293471573632605.html
https://www.cnblogs.com/itchq/articles/5648657.html
第四步、查找到我們想要處理的節點View
這里系統提供了兩個方法讓我們來進行查找想要的節點View
第一種是通過節點View的Text內容來查找
findAccessibilityNodeInfosByText("查找內容")
這種方式查找,就是像TextView,Button等View有文本內容的,可以使用這種方式快速的找到。
第二種是通過節點View在xml布局中的id名稱
findAccessibilityNodeInfosByViewId("@id/xxx")
這個一般很難知道,但是我們在查找系統控件的時候還是可以做的,因為系統的控件的id是可以知道的,而且是統一的。
(關於這兩個方法我們在寫網頁爬蟲程序的時候可能知道,在html中通過tag/name/id等信息可以找到一個節點,原理都類似)
http://blog.csdn.net/nishitouzhuma/article/details/51584606
獲取當前界面各種資源,信息
//獲取根節點
AccessibilityNodeInfo rootNode = getRootInActiveWindow();
//匹配Text獲取節點
List<AccessibilityNodeInfo> list1 = rootNode.findAccessibilityNodeInfosByText("match_text");
//匹配id獲取節點
List<AccessibilityNodeInfo> list2 = rootNode.findAccessibilityNodeInfosByViewId("match_id");
//獲取子節點
AccessibilityNodeInfo infoNode = rootNode.getChild(index);
執行腳本操作
//模擬點擊事件
target.performAction(AccessibilityNodeInfo.ACTION_CLICK);
//模擬輸入內容
clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText("label", "");
clipboard.setPrimaryClip(clip);
target.performAction(AccessibilityNodeInfo.ACTION_PASTE);