Apple的UIAutomation环境搭建和入门知识
简述
Xcode的instruments中的Automation是为了实现自动化测试的一个工具。实现方式有两种:它提供了两种实现方式,
1) 是通过JS脚本语言来执行自动化测试(普通自动化测试),
2) 另一种是通过录制(高级自动化测试)操作的方式自动生成脚本(不过这种方式生成的脚本容易产生bug,需要自己修改一下)
目前只支持javascript来编写脚本。
环境搭建
只要mac下装好Xcode即可
界面的操作使用
- 如何运行
打开要测试的程序,选择Product --> Profile --> 选择Automation即可运行起来
运行界面如下:

- 界面操作方法
如图所示:


脚本简介
自动化的常见步骤通常是三步:定位,操作,检查
定位
控件的定位主要有2种方式,一种是通过层次结构找到对应的控件并对其操作,另一种是直接坐标定位。
1、 层次结构图

UIATarget是最上层的类,表示真实设备或模拟器
UIAApplication对象代表app层级的UI,指对应的APP
UIwindow对象代表APP的窗口,通过mainWindow()方法得到的对象,指当前app中的主窗体,一个app的当前界面通常只会有一个主窗体
如果不知道对应控件所属的层级,可通过target.logElementTree()函数来打印APP窗口所有的元素位置。
2、坐标定位
找到控件对应的绝对坐标,直接进行操作。
比如点击某个控件,可直接运行:tap({x:30,y:131})
还有其他一些坐标定位方法,具体先不说了。
操作
1、 常见的操作
1) 按钮点击
tap()
2) 坐标点击
tap({x:30,y:131})
3) 双击
doubleTap({x:100, y:200})
4) 拉伸
pinchOpenFromToForDuration({x:20, y:200}, {x:300, y:200}, 2);
第一个坐标点是起点,第二个坐标点是终点,最后一个参数是持续时间,单位为秒。
5) 收缩
pinchCloseFromToForDuration({x:20, y:200}, {x:300, y:200}, 2);
第一个坐标点是起点,第二个坐标点是终点,最后一个参数是持续时间,单位为秒。
6) 拖曳
dragFromToForDuration({x:160, y:200}, {x:160, y:400}, 1);
7) 快速滑动
flickFromTo({x:160, y:200}, {x:160, y:400});
第一个坐标点是起点,第二个坐标点是终点,与拖曳不同的是它没有时间参数,因为这个操作的速度很快。
8) 等待
delay(3);
9) 打印当前屏幕所有控件信息
UIATarget.localTarget().logElementTree();
10) 输入信息
setValue("username")
检查
检查主要是指测试过程中一些信息的输出,包含尽可能多的信息,以便于发现和分析可能出现的错误。输出信息主要是以下几种
1、 日志输出
UIALogger主要就用于输出各种类型的日志,包括logStart,logPass,logFail,logMessage,logDebug,logWarning ,logError。
三个通常用来区分一个测试用例,logstart表示一个测试的开始,直到logPass或者是logFail为止。
其他几个是用在测试过程中输入不同级别的日志。
2、 截图
测试过程中,可随时截取当下的图,后续可用于分析
UIATarget.localTarget().captureScreenWithName("picname");
3、 通过测试代码来检查测试结果并直接输出
通过完成测试代码来检查测试结果的正确与否并直接输出。
Apple的UIAutomation环境搭建和入门知识的更多相关文章
- Android编程: 环境搭建、基本知识
学习的内容两个方面:环境搭建.基本知识 ====环境搭建==== 1.下载 android studio(http://developer.android.com/sdk/index.html) 2. ...
- Android菜鸟的成长笔记(1)——Android开发环境搭建从入门到精通
原文:Android菜鸟的成长笔记(1)--Android开发环境搭建从入门到精通 今天在博客中看到好多Android的初学者对Android的开发环境的搭建不熟悉而导致不能进行学习,所以我决定自己写 ...
- Spark+ECLIPSE+JAVA+MAVEN windows开发环境搭建及入门实例【附详细代码】
http://blog.csdn.net/xiefu5hh/article/details/51707529 Spark+ECLIPSE+JAVA+MAVEN windows开发环境搭建及入门实例[附 ...
- (十八)整合Nacos组件,环境搭建和入门案例详解
整合Nacos组件,环境搭建和入门案例详解 1.Nacos基础简介 1.1 关键特性 1.2 专业术语解释 1.3 Nacos生态圈 2.SpringBoot整合Nacos 2.1 新建配置 2.2 ...
- 基于Qt Designer和PyQt5的桌面软件开发--环境搭建和入门例子
本文介绍了如何使用技术栈PyCharm+Qt Designer+PyQt5来开发桌面软件,从环境搭建.例子演示到对容易混淆概念的解释.文中用到的全部软件+代码下载链接为:https://url39 ...
- 04 Mybatis 框架的环境搭建及入门案例
1.搭建 Mybatis 开发环境 mybatis的环境搭建 第一步:创建maven工程并导入坐标 第二步:创建实体类和dao的接口 第三步:创建Mybatis的主配置文件 SqlMapConifg. ...
- mybatis学习:mybatis的环境搭建与入门
一.mybatis的概述: mybatis是一个持久层框架,用java编写 它封装了jdbc操作的很多细节,使开发者只需要关注sql语句本身,而无需关注注册驱动,创建连接登繁杂过程 它使用了ORM思想 ...
- Mybatis学习笔记之一(环境搭建和入门案例介绍)
一.Mybatis概述 1.1 Mybatis介绍 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了go ...
- Mybatis学习笔记之---环境搭建与入门
Mybatis环境搭建与入门 (一)环境搭建 (1)第一步:创建maven工程并导入jar包 <dependencies> <dependency> <groupId&g ...
随机推荐
- jquery.edatagrid(可编辑datagrid)的使用
用spring+springmvc+mybatis+mysql实现简单的可编辑单元格,首先是页面效果图: 其中,“编号”列是不可编辑的,“暂缓措施”是可以自由编辑的,主要html组成: <%@ ...
- Golang 的 TOML库
TOML 的全称是 Tom's Obvious, Minimal Language,因为它的作者是 GitHub 联合创始人 Tom Preston-Werner. TOML 的目标是成为一个极简的配 ...
- python 需求文件requirements.txt的创建及使用
在虚拟环境中使用pip生成: (venv) $ pip freeze >requirements.txt 当需要创建这个虚拟环境的完全副本,可以创建一个新的虚拟环境,并在其上运行以下命令: (v ...
- java设计模式之装饰者模式学习
装饰者模式 Decorator模式(别名Wrapper):动态将职责附加到对象上,若要扩展功能,装饰者提供了比继承更具弹性的代替方案. 装饰者与被装饰者拥有共同的超类,继承的目的是继承类型,而不是行为 ...
- PAT 1061. Dating
题是别人出的,不按她的想法来也没办法,真心想k一顿 #include <cstdio> #include <cstdlib> using namespace std; cons ...
- 第8章 CSS3中的变形与动画(上)
变形--旋转 rotate() 旋转rotate()函数通过指定的角度参数使元素相对原点进行旋转.它主要在二维空间内进行操作,设置一个角度值,用来指定旋转的幅度.如果这个值为正值,元素相对原点中心顺时 ...
- 第1章:程序设计和C语言(C语言入门)
一.程序和程序语言 1,程序的概念:完成某项事物所预设的活动方式. 2,程序设计:人们描述计算机要做的工作. 二 .程序设计语言及其发展 1.机器语言,2汇编语言,3高级语言{a)编译,b)解释}: ...
- BestCoder Round #92
这里是逢比赛必挂的智障选手ysf…… 不知道是因为自己菜还是心态不好……也许是后者吧,毕竟每次打比赛的时候都会很着急.lrd说我打比赛的功利性太强,想想确实是这样. 昨天打完之后自觉身败名裂没敢写出来 ...
- 在WinServer上安装小红伞杀毒软件的经验总结
作者:朱金灿 来源:http://blog.csdn.net/clever101 在WinServer2008或WinServer2012不能直接安装小红伞杀毒软件的免费版,需要安装服务器版.我手头并 ...
- 批量备份mysql数据库(shell编程)
#!/bin/bash DBPATH=/mysqlbak MYUSER=root MYPASS= SOCKET=/var/lib/mysql/mysql.sock MYCMD="mysql ...