当前位置: 首页 > news >正文

原创开源项目 -- 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

 

本文由知平软件的刘斌华原创,转载请注明出处。

知平软件致力于移动平台自动化测试技术的研究,我们希望通过向社区贡献知识和开源项目,来促进行业和自身的发展。

转载于:https://www.cnblogs.com/vowei/archive/2012/08/13/2614468.html

相关文章:

  • 图片轮换效果 pixviewer.swf的使用
  • jquery 与 discuz 默认JS 冲突解决办法
  • sql查看表的锁并解锁
  • Centos5.5安装MONO2.10.8和Jexus 5.0开启Linux平台.net应用新篇章
  • C++中的const限定修饰符
  • 查看SqlServer表 索引 创建时间,修改时间。或者修改记录(转)
  • 在HTML中添加百度地图(有图)
  • 设计模式(4)之建造者模式
  • 保护模式下中断或异常示意图
  • java override overload
  • 多路访问网络中的挑战
  • 模拟系统提示框
  • DSL概念、类别、为什么要写DSL 1
  • Javascript 日期格式化
  • 成绩单课程翻译参考总表
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • Docker下部署自己的LNMP工作环境
  • egg(89)--egg之redis的发布和订阅
  • ES6 ...操作符
  • Git初体验
  • Git学习与使用心得(1)—— 初始化
  • Octave 入门
  • php的插入排序,通过双层for循环
  • Rancher-k8s加速安装文档
  • Redux 中间件分析
  • text-decoration与color属性
  • Web标准制定过程
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 翻译:Hystrix - How To Use
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 使用 Docker 部署 Spring Boot项目
  • 使用API自动生成工具优化前端工作流
  • 使用common-codec进行md5加密
  • 新版博客前端前瞻
  • FaaS 的简单实践
  • Java总结 - String - 这篇请使劲喷我
  • 扩展资源服务器解决oauth2 性能瓶颈
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • ​水经微图Web1.5.0版即将上线
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • (a /b)*c的值
  • (C#)获取字符编码的类
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (poj1.3.2)1791(构造法模拟)
  • (ZT)薛涌:谈贫说富
  • (分布式缓存)Redis哨兵
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (万字长文)Spring的核心知识尽揽其中
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • (转载)Google Chrome调试JS
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • .NET 反射 Reflect
  • .Net小白的大学四年,内含面经