HierarchyViewer for iOS

程序名称:HierarchyViewer for iOS

授权协议: GPLv3

操作系统: 跨平台

开发语言: Java

HierarchyViewer for iOS 介绍

我们知道,Hierarchy Viewer 是Android
SDK包中非常好用的工具。开发及测试人员,即使没有应用程序的源代码,也可以获取Activity的控件层次图,以及每个控件的所有属性和截图。那么,iOS下有没有类似的工具呢?现在,答案是肯定的。

Hierarchy Viewer for iOS是我们开发的一个开源工具,采用GPL v3协议。该项目基于eclipse RCP构架,支持Mac OS
X,Windows和Linux三个平台。项目借鉴了部分Android项目源代码。下面是HierarchyViewer for iOS在Mac OS
X的截图:

我们接下来就来详细介绍该工具。HierarchyViewer for
iOS的数据源是Instruments录制和执行javascript脚本时生成的日志文件–包括Automation
Results.plist及截图。HierarchyViewer for
iOS不仅可以用来直观地查看测试用例结果日志中的控件树。还可以用它来辅助进行Instruments下的iOS脚本录制,相信可以为测试人员带来极大的便利。那么,我们先来介绍如何用HierarchyViewer
for iOS的用法,然后再来介绍它的主要功能。

HierarchyViewer for iOS使用方法介绍

HierarchyViewer for iOS的使用非常简便,打开菜单
文件->打开plist日志,或者在工具栏中点击

,打开文件选择对话框,选择一个Automation

Results.plist文件即可。

Instruments录制时使用HierarchyViewer for iOS

我们推荐在录制时使用HierarchyViewer for iOS来辅助录制,步骤如下:

1)在用Instruments录制脚本时,在需要获取控件树信息的位置插入如下代码:

target.logElementTree()

这样,在日志中将把此时的控件树打印出来。注意,必须从根节点,也就是UIATarget开始打印HierarchyViewer for iOS才能识别。

2 ) 点击Record按钮,执行脚本

3)把日志导出。 点击Export Traced Results,把日志导出到文件夹。

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

5)重复步骤1)-3),把日志导出到相同的目录。这时,只要在HierarchyViewer for iOS中点击“刷新plist日志”,即可获得最新的日志。

HierarchyViewer for iOS功能介绍

HierarchyViewer for iOS界面主要包含5个视图,分别是:

控件树列表视图

控件树视图

控件树缩略图

截屏视图

属性视图

1,如何操作视图

控件树列表视图中列出了Automation Results.plist中包含的所有控件树,如果有列表项的名字是“UIATarget- name-iPhone
Simulator rect-{{0,0},{320,480}}
4”,那么在日志文件夹中你可以找到一个同名的.png的截屏图片,和同名的文件夹保存了各个控件的截图。
列表项被选中时,控件树视图、控件树缩略图和截屏视图会立刻打开并显示选中的控件树的视图。

当控件树列表视图项被选中后,控件树视图、控件树缩略图、截屏视图和属性视图将被激活,我们简单介绍下他们是怎么工作的。

1,前后滚动鼠标滚轮,可以放大或缩小控件树视图;按住控件树视图的空白区域,可以拖动整个控件树。控件树缩略图也会随之变化。

2,在控件树选中某个节点/控件时,缩略图和截屏视图对应的节点/控件也会被选中,属性视图中会显示该节点的所有属性。当然,在截屏视图中选中某个控件时,其他视图也会做出同样的响应。

3,当鼠标在截屏视图上移动时,我们会为你显示该点对应的坐标值,该坐标值是iOS系统的标准坐标值:

2,保存层次结构图

在菜单栏中选择保存控件树视图,或者在工具栏中点击

,可以把控件树保存为图片。

3,生成javascript调用路径

在层次结构视图或者截屏视图中选中一个节点/控件,点击右键,会弹出如下菜单栏:


点击菜单项,将生成该节点的调用路径,并保存在剪贴板,例如

拷贝函数调用路径(索引): 生成基于控件索引的函数调用路径并保存在剪贴板,如

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。请保持关注吧。

HierarchyViewer for iOS 官网

github.com/vowei/HierarchyViewer-4-iOS

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


BBGestureBack Full screen return gesture(全屏手势返回 滑动返回 pop 动画效果) iOS 侧滑返回
Framework7 或者叫 F7 是全功能的绑定 iOS 7 应用的 HTML 框架。Framework7 是免费开源的 HTML
iOS 调试库,支持 iOS8+,无需添加任何代码,方便 iOS 开发和测试。 屏幕截图 使用教程
DarkModeKit是在Apple官方的深色模式发布之前设计和开发的。 它提供了一种机制来支持iOS 11+(包括iOS 13)上的应用程序的暗模式。
SimpleNote iOS 版客户端。SimpleNote 是一款在多平台上发布的笔记应用。 开发准备条件:
Kivy iOS,此工具旨在为 iOS 编译必要的库以运行应用程序并管理 Xcode 项目的创建。
TYDownloadManager是一个iOS的文件下载管理器包,可以提示下载过程中的最新进展和状态的变化。
mruby是一款轻量级的Ruby实现,遵循ISO标准。它可以以解释的形式或者在VM上编译和执行形式运行。
因为涉嫌危害消费者的隐私问题,苹果公司决定停止使用原有的UDID系统,移动应用软件开发者们正在竞相寻找新的替代方案。移动应用销售平台Appsfire目前推出了OpenUDID,它是一个开源版本的UDID。Appsfire声称他们已
EasyIOS 开源至今已经1周年,全新Swift版本今日发布,支持利用HTML来开发IOS应用,支持模拟器实时预览,基于MVVM思想,HTML数据绑定,反射所有
在 iOS 领域使用 Pod 来进行组件化开发时常常需要手动进行一系列的操作,来实现Pod 组件的更新目的。特别是一些业务关联性比较强的 Pod
PokerCard,一款 iOS 多样式弹窗开源库。 Basic Usage import PokerCard class ViewController: UIViewController {
MiaowShow MiaowShow是高仿《喵播APP》的iOS视频直播项目。 项目具体讲解地址 iOS视频直播初窥:高仿<喵播APP>
ZJAttributedText 是高性能轻量级富文本框架 前言 如果遇到上面一个需求, 你会怎么处理, 若干个 UILabel + UIImageView? NSAttributedString拼接? CoreText?
DynamicCocoa,是滴滴 App 架构组自研的 iOS 动态化方案,可以让现有的 Objective-C 代码转换生成中间代码(JS),下发后动态执行。滴滴客户端 App 架构团队表示正在积极准备相关事项,计划于 2017 年初开源。
ObjectiveSupport aims to bring some of the popular Rubyisms found in ActiveSupport to Objective-C. This project originated as a component of
StyleKit 是能让你使用一个简单的 JSON 文件美化你的应用的微框架。 它如何工作?
XCActionBar 是一个用于 Xcoded 的通用生产工具。
Social Go是一个基于iOS平台,在人群中获取小精灵的雷达和匿名聊天App。它使用Swift
Swift版本最新发布 : https://github.com/EasyIOS/EasyIOS- Swift 全新基于MVVM(Model-View-ViewModel)编程模式架构,开启EasyIOS开发函数式编程新篇章。