原創開源項目 -- HierarchyViewer for iOS(1)


我們知道,HierarchyViewer是Android SDK包中非常好用的工具。開發及測試人員,即使沒有應用程序的源代碼,也可以獲取Activity的控件層次圖,以及每個控件的所有屬性和截圖。那么,iOS下有沒有類似的工具呢?現在,答案是肯定的。

 

HierarchyViewer for iOS是我們開發的一個開源工具,采用GPL v3協議。該項目基於eclipse RCP構架,支持Mac OS X,Windows和Liunx三個平台。項目借鑒了部分Android項目源代碼。下面是HierarchyViewer for iOS在Mac OS X的截圖:

image

 

我們接下來就來詳細介紹該工具。HierarchyViewer for iOS的數據源是Instruments錄制和執行javascript腳本時生成的日志文件--包括Automation Results.plist及截圖。HierarchyViewer for iOS不僅可以用來直觀地查看測試用例結果日志中的控件樹。還可以用它來輔助進行Instruments下的iOS腳本錄制,相信可以為測試人員帶來極大的便利。那么,我們先來介紹如何用HierarchyViewer for iOS的用法,然后再來介紹它的主要功能。

 

HierarchyViewer for iOS使用方法介紹

HierarchyViewer for iOS的使用非常簡便,打開菜單 文件->打開plist日志,或者在工具欄中點擊image,打開文件選擇對話框,選擇一個Automation Results.plist文件即可。

image

 

Instruments錄制時使用HierarchyViewer for iOS

我們推薦在錄制時使用HierarchyViewer for iOS來輔助錄制,步驟如下:

1)在用Instruments錄制腳本時,在需要獲取控件樹信息的位置插入如下代碼:

target.logElementTree()

這樣,在日志中將把此時的控件樹打印出來。注意,必須從根節點,也就是UIATarget開始打印HierarchyViewer for iOS才能識別。

 

2 ) 點擊Record按鈕,執行腳本

image

 

3)把日志導出。 點擊Export Traced Results,把日志導出到文件夾。

image

 

4)在HierarchyViewer for iOS中打開剛剛保存的日志。你就可以看到“target.logElementTree()”執行生成的控件樹了。

 

5)重復步驟1)-3),把日志導出到相同的目錄。這時,只要在HierarchyViewer for iOS中點擊“刷新plist日志”,即可獲得最新的日志。

image

 

 

 

HierarchyViewer for iOS功能介紹

HierarchyViewer for iOS界面主要包含5個視圖,分別是:

控件樹列表視圖

控件樹視圖

控件樹縮略圖

截屏視圖

屬性視圖

 

1,如何操作視圖

控件樹列表視圖中列出了Automation Results.plist中包含的所有控件樹,如果有列表項的名字是“UIATarget- name-iPhone Simulator rect-{{0,0},{320,480}} 4”,那么在日志文件夾中你可以找到一個同名的.png的截屏圖片,和同名的文件夾保存了各個控件的截圖。 列表項被選中時,控件樹視圖、控件樹縮略圖和截屏視圖會立刻打開並顯示選中的控件樹的視圖。

 

當控件樹列表視圖項被選中后,控件樹視圖、控件樹縮略圖、截屏視圖和屬性視圖將被激活,我們簡單介紹下他們是怎么工作的。

1,前后滾動鼠標滾輪,可以放大或縮小控件樹視圖;按住控件樹視圖的空白區域,可以拖動整個控件樹。控件樹縮略圖也會隨之變化。

2,在控件樹選中某個節點/控件時,縮略圖和截屏視圖對應的節點/控件也會被選中,屬性視圖中會顯示該節點的所有屬性。當然,在截屏視圖中選中某個控件時,其他視圖也會做出同樣的響應。

image

 

3,當鼠標在截屏視圖上移動時,我們會為你顯示該點對應的坐標值,該坐標值是iOS系統的標准坐標值:

image

 

2,保存層次結構圖

在菜單欄中選擇保存控件樹視圖,或者在工具欄中點擊image,可以把控件樹保存為圖片。

image

 

 

3,生成javascript調用路徑

在層次結構視圖或者截屏視圖中選中一個節點/控件,點擊右鍵,會彈出如下菜單欄:

image       image 

 

點擊菜單項,將生成該節點的調用路徑,並保存在剪貼板,例如

拷貝函數調用路徑(索引):生成基於控件索引的函數調用路徑並保存在剪貼板,如

target.frontMostApp().windows()[0].tableViews()[0].groups()[2].elements()[0]

 

拷貝函數調用路徑(控件名):生成基於控件名的函數調用路徑並保存在剪貼板,如

 

target.frontMostApp().windows()[0].tableViews("Empty list").groups("Advanced Options").elements("Advanced Options")

 

這樣,把生成的控件調用路徑拷貝到Instruments的腳本中,你就可以直接調用該控件的操作了,而不需要重新再錄制一遍。很酷吧。

 

下節展望

在寫自動化測試用例時,一個重要的問題就是對動態控件的查找和操作。 想過用jquery的語法來查找iOS控件嗎? 我們正在開發一個叫做iquery的開源項目(猜猜它是做什么的)。事實上,HierarchyViewer for 有些功能就是輔助編寫iquery的,下一節,我們將介紹怎么使用HierarchyViewer for iOS來輔助編寫iquery。請保持關注吧。

 

Github地址:https://github.com/vowei/HierarchyViewer-4-iOS

程序下載地址:https://github.com/vowei/HierarchyViewer-4-iOS/downloads

項目官方地址: www.vowei.com

 

本文由知平軟件劉斌華原創,轉載請注明出處。

知平軟件致力於移動平台自動化測試技術的研究,我們希望通過向社區貢獻知識和開源項目,來促進行業和自身的發展。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM