圖3 UI Automation錄制的腳本截圖
對比 InstrumentDriver 的 java用例,同樣功能的用例實現截圖如下:
圖4 InstrumentDriver java 用例
可以看出 InstrumentDriver 提供的 printElementTree 方法可以打印出當前window所有元素, findElementByText 方法能很精確的查找到相應元素。這樣根據腳本就知道這一步驟的具體行為,自描述性大大提升,可維護性更好。
下圖是 printElementTree() 方法 的具體輸出,樹形打印出win下的所有元素:
圖5 PrintElementTree 輸出示例
這里我們可以根據輸出方便的找到需要操作的元素,并且可以直接使用該元素的 guid 屬性代表該元素,插入用例進行相應的操作。更推薦的做法是使用findElementByText進行定位,假如text(name,value ,label屬性)都為空,可以查看父級元素或者更上級元素是否有text屬性,然后使用elements() 索引定位,可以最大化縮小范圍,使腳本更健壯,可讀性更高。
下圖是用例調試過程中,變量值的查看示例:
圖6 debug 模式調試用例,查看變量值
Debug模式運行,Client 會詳細返回對應操作的信息,Server 端接收后實例化為具體對象,調試中可以查看具體對象的屬性值(name ,value,label,rect,guid),方便調試用例,更快的找到問題所在。
InstrumentDriver 剛剛誕生,正逐漸用于iOS自動化測試中,肯定還有很多改進的地方。希望在使用過程中得到更多的反饋,通過不斷改進,進一步讓它完善起來,更好的服務于大家。