您的位置:首页 > 移动开发 > IOS开发

原创开源项目 -- HierarchyViewer for iOS(2)

2016-06-12 14:43 639 查看
前文中,我们介绍了HierarchyViewer for iOS的主要功能,这款工具可以非常直观的阅读iOS应用的控件层次图,如下图所示:


 
还可以右键点击某个控件,来获取它在UIAutomation中的调用路径:



 
然后我们在剪切板可以得到该控件的调用路径:
.buttons()["Table"]


 

把它拷贝到Instruments中,就可以直接调用这个控件了。

 

更多功能可以参考上文,本文我们将要介绍的是HierarchyViewer for iOS如何辅助生成iquery代码并进行测试的。

 

什么是iquery

iquery.js是我们发布的一个辅助iOS UIAutomation的javascript开源库,它可以非常方便的帮助我们找到iOS上面的控件,在处理动态生成的控件时更是非常有效;它采用了类似jquery的语法,熟悉jquery的人员很容易入手。用法非常简单,你可以在https://github.com/vowei/iQuery/downloads 下载它,然后在iOS UIAutomation中引用它即可,例如:

#import "iquery.js"


 

我们举个例子来说明下iquery的语法吧。

[code]$(">> [name = 'Table']")[0].tap()

 

以上代码表示在整个页面中查找name为‘Table’的控件,并点击它。我们来分析它的语法:

>> -- 表示查找所有的子孙节点。由于iquery默认是从UIAWindow开始查找的,所以这里>>指的就是查找UIAWindow所有的子孙控件。

[name = ‘Table’] -- 表示在结果中查找name为’Table’的控件。

 

这里有个小技巧,读者可能会感觉执行上面的代码速度会比较慢,这是由于iOS UIAutomation自身的问题导致在遍历控件的子控件时速度很慢造成的,解决办法是在UIAutomation脚本前面加上下面的语句:

UIATarget.localTarget().setTimeout(0);


 

具体可以参考stackoverflow对这个问题的回答。

 

iquery生成测试器

iquery为我们提供了强大的功能,但是手工编写还是一件有点麻烦的事,HierarchyViewer for iOS为提供了友好的iquery生成测试工具来帮助我们编写和测试它。

在工具栏上点击[url=http://images.cnblogs.com/cnblogs_com/Binhua-Liu/201208/201208150405008705.png]target.frontMostApp().windows()[0].na
4000
vigationBars[]("TestUIDemo").$("> [value='TestUIDemo']")[0].tap()[/code]

 

以上调用的前一部分target.frontMostApp().windows()[0].navigationBars[]("TestUIDemo")-- 是标准的UIAutomation语法,后一部分.$("> [value='TestUIDemo']")[0],是iquery语法。

 

以上语法的意义是,在name为TestUIDemo的NavigationBar下面,查找value为TestUIDemo的子控件,并tap它:



> 表示查找所有的子控件(注意,不是子孙控件),这里由于当前当前控件是NavigationBar,所以查找的是NavigationBar的所有子控件

[value=’TestUIDemo’] 表示查找value为‘TestUIDemo’的控件。

 

那么这种混合语法如何进行生成和测试呢?如下图所示:

[url=http://images.cnblogs.com/cnblogs_com/Binhua-Liu/201208/201208151636476913.png]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: