【干货】iOS9的新特性UI Tests
视频汇总首页:http://edu.51cto.com/lecturer/index/user_id-4626073.html
什么是UI Tests呢?
UI Tests是苹果提供给我们进行UI测试的一套框架。
UI Tests有什么用?
它可以通过编写代码、或者是记录用户操作过程并将其代码化,来实现自动点击某个按钮、视图,或者自动输入文字等功能。
UI Tests的意义
在实际的项目迭代过程中,随着项目越做越大,功能越来越多,仅仅靠人工操作的方式来覆盖所有测试用例是非常困难的,尤其是加入新功能以后,旧的功能也要重新测试一遍,这导致了测试需要花非常多的时间来进行回归测试,这里产生了大量重复的工作,而这些重复的工作有些是可以自动完成的,这时候UI Tests就可以帮助解决这个问题了。
使用方法
第一步:添加UI Tests。
如果是新项目,则创建工程的时候可以直接勾选Include UI Tests选项,如果是已有的项目,可以通过添加target的方式添加一个UI Tests的方式,如下图:
在Test选项中选择Cocoa Touch UI Testing Bundle.
第二步:创建测试代码。
这里主要有两种方式来生成测试代码:
1、手动创建测试代码。
打开测试文件,在testXXX()方法中添加测试代码
2、通过录制脚本的方式生成测试代码。
选择测试文件后,点击左下方的录制按钮,这时候开始进行操作,它会记录你的操作步骤,并生成测试代码。
下图就是在一些操作后自动生成的测试代码。
通过自动生成的代码片段,我们能够分析出测试代码的结构和一些可点击控件的名称,将这些点击的方法和控件名称记录下来,之后就可以自己编写测试代码了,要知道手动创建的代码可比录制的方法灵活的多哦!
第三步:开始测试。
点击testExample方法旁边的播放按钮,它就开始执行你的测试case了,这时候你会看到你的测试App在自动操作。
UI Tests语法简介
这里主要给大家介绍一下UI Tests的主要类及方法。
XCUIApplication类:
继承自XCUIElement,这个类掌管应用程序的生命周期,里面包含两个主要方法:
launch(): 启动程序
terminate(): 终止程序
XCUIElement类:
继承自NSObject,实现协议XCUIElementAttributes, XCUIElementTypeQueryProvider,可以表示系统的各种UI元素,它主要包含以下几个方法。
exist: 可以让你判断当前的UI元素是否存在。
descendantsMatchingType(type:XCUIElementType): 取某种类型的元素以及它的子类集合。
childrenMatchingType(type:XCUIElementType): 取某种类型的元素集合,不包含它的子类。
这两个方法的区别在于,你仅使用系统的UIButton时,用childrenMatchingType就可以了,如果你还希望查询自己定义的子Button,就要用descendantsMatchingType方法。
另外UI元素还有一些交互方法:
tap(): 点击。
doubleTap(): 双击。
pressForDuration(duration: NSTimeInterval): 长按一段时间。
typeText(text: String): 用于textField和textView输入文本时使用,使用前要确保文本框获得输入焦点,可以使用tap()函数使其获得焦点。
当然了,这里也只是给大家简单介绍了一下常用的函数,具体如何使用还需要大家下去进一步探索哦!
【干货】iOS9的新特性UI Tests相关推荐
- iOS9的新特性以及适配方案
1. 限制HTTP协议,全部改用更安全的HTTPS iOS9让所有的HTTP默认使用了HTTPS,原来的HTTP协议传输都改成TLS1.2协议进行传输.直接造成的情况就是App发请求的时候弹出网络无法 ...
- 【网安干货】MySQL8新特性注入技巧
新增的表 information_schema.TABLESPACES_EXTENSIONS 从mysql8.0.21开始出现的, table 关键字出现的比较早,在8.0.19之后就有了,所以如果想 ...
- iOS9 开发新特性 Spotlight使用
1.Spotloight是什么? Spotlight在iOS9上做了一些新的改进, 也就是开放了一些新的API, 通过Core Spotlight Framework你可以在你的app中集成Spotl ...
- ios9和ios10的新特性
ios9和ios10的新特性 昨天面试了一个做ios开发的公司,其中面试官问我最新的ios系统版本是多少,以及它的特性是什么?由于自己是初学者,所以对这些没有关注过.今天特地搜索了一下关于ios9和i ...
- iOS 新特性实现 3DTouch 开发
好久没有写过文章了,今天就给大家带来一篇比较简单的开发教程吧!目的是为了让大伙能够避开那些不必要的坑,快速高效的实现功能.今天呢来和大家讲一下iOS9的新特性3DTouch开发(iOS10都已经出了B ...
- iOS 9 的新特性
2015年9月8日,苹果宣布iOS 9操作系统的正式版在太平洋时间9月16日正式推出,北京时间9月17日凌晨1点推送. 新的iOS 9系统比iOS8更稳定,功能更全面,而且还更加开放.iOS 9加入了 ...
- 《iOS9开发快速入门》——第2章,第2.1节Xcode 7.0的新特性
本节书摘来自异步社区<iOS9开发快速入门>一书中的第2章,第2.1节Xcode 7.0的新特性,作者 刘丽霞 , 邱晓华,更多章节内容可以访问云栖社区"异步社区"公众 ...
- iOS9有哪些新特性
2019独角兽企业重金招聘Python工程师标准>>> 苹果发布会得到了终于落下了帷幕,iOS9当仁不让的成为了主角之一,新版本带来了多种新功能,其它部分也有一定的优化升级,但总体来 ...
- iOS9 iOS10 iOS11的新特性
iOS9 特性 关键字参考 2015 Objective-C 新特性 1.关键字 : 这些是纯编译器的语法支持(llvm 7.0),没有借助任何 objc runtime 的升级,也就是说,这个新语法 ...
最新文章
- python 类-python类定义的讲解
- M4i—下一代高速数据采集、数字化仪平台
- 使用C#进行Word 2002和Excel 2002编程
- 容器编排技术 -- 使用kubectl实现应用滚动更新
- 第 69 章 数据库链接
- php oci_bind_array_by_name查询,PHP - 函数:OCIBindByName()
- 微信开发学习 问题1: 网页授权问题 “该连接无法访问” 解决方法
- jdbc连接linux下的mysql_Linux JDBC连接MySQL数据库
- python 分割线_用Python打印分割线练习
- 接入 钉钉 OA 审批
- 如何修改echarts源码(其他框架也可适用)
- Unity 3D 海水的实现2 折射与反射 离屏相机的渲染
- VS2019 MFC模式下如何调用控制台并用cprintf在控制台打印
- python123测验答案数值运算程序_Python程序基础-中国大学mooc-题库零氪
- 服务器做RAID,各个RAID特点
- 负数时的有符号整型和无符号整型的转换
- 响应式织梦模板SEO优化教程资讯类网站
- 怎样发量暴增_如何增加头发的发量?真的太实用了!
- 基于ICN的数据缓存
- 主流计算机的注意硬件配置,主流计算机配置选择
热门文章
- 爆火的深度学习面试书现可白嫖!GitHub上线2周1.5K Star,之前售价146元
- 2020未来科学大奖公布,砒霜治疗白血病发现者张亭栋、王振义获生命科学奖,最年长者96岁...
- 51年被发现9次,陶哲轩证明的公式成了重复造轮子?事情并没有这么简单
- 高清重制版阿波罗11号录像,英伟达RTX还原50年前登月细节
- 开源云平台 Nano v0.9.1发布 - 镜像重构/资源绑定/日志
- HTML5学习路线资料,HTML5前端面试的技术栈
- Java调用net的webservice问题分享
- 浅谈压缩感知(二十一):压缩感知重构算法之正交匹配追踪(OMP)
- 笔记本win7共享wifi操作说明
- 函数指针与指针函数的使用与小结