3. UITest笔记
1. XCUIApplication *app = [[XCUIApplication alloc] init];
App为查询的入口,当界面发生变化,查询数也会随之更新。
即使是先前存储的XCUIElement也会在下一次使用的时候,根据查询Element所用的Query再次查询后执行操作。
2. UIView.Hidden = YES的时候,可以通过Query找到这个View。
3. UIView被遮挡时,仍然可以使用Query找到这个View。
4. [XCUIElement tap]可能会失效。
Tap流程:1)查询这个控件 2)将这个控件滑动到屏幕可见范围 3)向这个控件捕获一个可点击点发送点击消息
理论上使用Tap的时候不用考虑在可滑动控件(Tableview, Scrollview, etc)内的控件是否在屏幕内,只需要考虑这个控件是否有可点击的点(isHittable = YES)
如果被遮挡,会抛出异常Unable to find a hittable point to tap。如果在不可滑动控件内,会抛出异常Unable to scroll to element。
实际上,可能经常要处理滑动的问题。
当被遮挡时,若不被点击的对象不冲突,可以使用XCUICoordinate来点击屏幕上的点进行点击。
但是使用点点击的时候,不会自动将控件滑动到屏幕内,当点击屏幕外的点击的时候,目前的操作是会出现滑动操作。
所以使用点点击的时候,需要注意将控件滑动到屏幕内。
注:TableviewCell和CollectionviewCell这些可以重用的控件,在重用池也会被查询到,比较难处理。
注:使用XCUICoordinate进行点击的时候不建议使用左上角(在5S上使用时容易失效)
5. 高度自定义的控件现无法被查询到。
6. 处理有图像的控件
若图像来自于非本地,通常无标识符。
若图像来自于本地,这类控件的Label通常为图像的名称(不兼容字符变成空格)。
在XCode7.3中,当通过事件,图像发生变化的时候,这个Label不会发生变化,所以无法通过这个控件的图像来检测状态,如果是Button,可以使用iSSelected查询点击态。
7. UITests只能处理对应App的行为,若发生跨App操作(如第三方登录)会在查询时抛出异常。
8. 在XCode7.3中, 对于可重用控件,重用的和初始化的极有可能在查询时查询树结构不同,所以根据情况需要区别处理。
常见问题
- UITextField等需要先Tap再TypeText,有时模拟器键盘不弹出会导致TypeText崩溃。
make sure 'Hardware -> Keyboard -> Connect hardware keyboard' is off.
2. 常见错误之一

录制时,操作了不错可查询控件(如isAccessibilityElement为No的控件),会产生这种错误。
3. 获取屏幕尺寸的问题
UI Test目前在另一个App进程里运行,在这个进程中使用UI相关的类会产生错误。
如通常获取屏幕尺寸的方法为[UIScreen mainScreen].bounds.size。但是这在UI Test中获取的屏幕尺寸是错误的,目前总为4s的尺寸。
如果需要获取屏幕尺寸,比较精确的方法是通过XCUIApplication查询windows中查询mainWindow这个控件,然后获取mainWindow.frame就是屏幕的尺寸。
3. UITest笔记的更多相关文章
- git-简单流程(学习笔记)
这是阅读廖雪峰的官方网站的笔记,用于自己以后回看 1.进入项目文件夹 初始化一个Git仓库,使用git init命令. 添加文件到Git仓库,分两步: 第一步,使用命令git add <file ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- SQL Server技术内幕笔记合集
SQL Server技术内幕笔记合集 发这一篇文章主要是方便大家找到我的笔记入口,方便大家o(∩_∩)o Microsoft SQL Server 6.5 技术内幕 笔记http://www.cnbl ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- NET Core-学习笔记(三)
这里将要和大家分享的是学习总结第三篇:首先感慨一下这周跟随netcore官网学习是遇到的一些问题: a.官网的英文版教程使用的部分nuget包和我当时安装的最新包版本不一致,所以没法按照教材上给出的列 ...
- springMVC学习笔记--知识点总结1
以下是学习springmvc框架时的笔记整理: 结果跳转方式 1.设置ModelAndView,根据view的名称,和视图渲染器跳转到指定的页面. 比如jsp的视图渲染器是如下配置的: <!-- ...
- 读书笔记汇总 - SQL必知必会(第4版)
本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...
- 2014年暑假c#学习笔记目录
2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...
随机推荐
- (linux)初学者学linux块设备驱动
面对不断升级的linux内核.GNU开发工具.linux环境下的各种图形库,很多linux应用程序开发人员和linux设备驱动开发人员即兴奋,又烦躁.兴奋的是新的软件软件.工具给我提供了更强大的功 ...
- POJ 2017 Speed Limit (直叙式的简单模拟 编程题目 动态属性很少,难度小)
Sp ...
- 总结 <stdlib.h>头文件 在算法中可能会用到的一些函数
头文件<stdlib.>具有一定的总结性. 它定义了类型.宏和各种函数,这些函数用于:内存管理.排序和查找.整形运算.字符串到数字的转换.伪随机数序列.与环境的接口.把多字节字符串和字符转 ...
- dict built-in function
映射类型:字典 字典是无序的,映射类型对象里哈希值和被指向的对象是一对多的关系,字典中的键必须是可哈希的,所有不可变的类型都是可哈希的,另外针对数字键来说,值相等的两个数字是相同的键,例如1和1.0: ...
- jsorder 第三方修改版 修正bug 增加总价
我主要运用这个jsorder,修正了它的不足//1.0版本bug:刷新页面 无法增加或者删除原来添加的商品//1.1版本:修正了1.0版本 新增bug 能够修改原来的商品 但出现产品数量为0 仍然保 ...
- java邮件发送(含附件)
1. [代码]java邮件发送(含附件)疯狂的IT人站长整理的:利用Java发送邮件(含附件)的例子:1.邮件发送的配置propertity文件内容如下:(utils.properties文件放在sr ...
- [原创]java获取word文档的条目化内容
在开发Web办公系统或文档系统时,PageOffice组件是众所周知的在线处理微软word/ppt/excel文档的强大工具,它对WORD文档的各种处理在API层面进行了封装,屏蔽了Office VB ...
- 一题多解 —— linux 日志文件(log)reload 重新载入
1. tail -F 等同于–follow=name –retry,根据文件名进行追踪,并保持重试,即该文件被删除或改名后,如果再次创建相同的文件名,会继续追踪 也即可以间接实现从日志文件末尾,不断载 ...
- Intelidea右键新建选项没有Java class选项
Intelidea创建好项目之后,右键新建Java class的时候发现没有改选项,只有以下几个选项 把sec目录设为源码目录,首先打开Project Structure
- bzoj2676
二分概率+矩乘+dp 也是二分概率,然后dp[i][j][k]表示当前到了i,有j条命,下一次的收益是k,然后矩乘转移,但是我自己的似乎wa了,抄了liu_runda的才行,具体不知道为什么 注释的是 ...