ios UI自动化测试学习笔记
一、一些注意事项:
1.做自动化测试时注意如果是真机话首先要设置不锁屏。
2.自动化测试过程中如果程序后台或崩溃了。脚本运行将会暂停,直到程序再次回到前台。
3.必须明确指定关闭自动测试,测试完成或中断都不会自动关闭测试。
4.测试也是根据视图树的元素位置获取元素进行测试,根视图元素是UIATarget。
二、部分功能说明:
1.获取当前程序(在激活状态):
- UIATarget.localTarget().frontMostApp();
2.获取目标程序的主Window:
- UIATarget.localTarget().frontMostApp().mainWindow();
3.获取一个cell中的文本元素:
- UIATarget.localTarget().frontMostApp().mainWindow().tableViews()[0].cells()[0].elements()["Chocolate Cake"];
4.触发一个导航栏中“Add”按钮点击:
- UIATarget.localTarget().frontMostApp().navigationBar().buttons()["Add"].tap();
5.触发点击屏幕上的某个位置:
- UIATarget.localTarget().doubleTap({x:100, y:200});
- UIATarget.localTarget().twoFingerTap({x:100, y:200});
6.获取tabBar并点击:
- appWindow.tabBar().buttons()["Unit Conversion"].tap();
7.放大:
- UIATarget.localTarget().pinchOpenFromToForDuration({x:20, y:200}, {x:300, y:200}, 2);
缩小(后面是个时间参数,表示持续时间):
- UIATarget.localTarget().pinchCloseFromToForDuration({x:20, y:200}, {x:300, y:200}, 2);
8.拖拽和快速滑动:
- UIATarget.localTarget().dragFromToForDuration({x:160, y:200}, {x:160, y:400}, 1);
- UIATarget.localTarget().flickFromTo({x:160, y:200}, {x:160, y:400});
9.为文本框输入内容:
- var recipeName = "Unusually Long Name for a Recipe";
- UIATarget.localTarget().frontMostApp().mainWindow().textFields()[0].setValue(recipeName);
10.在tabBar中导航
- var tabBar = UIATarget.localTarget().frontMostApp().mainWindow().tabBar();
- var selectedTabName = tabBar.selectedButton().name();
- if (selectedTabName != "Unit Conversion") {
- tabBar.buttons()["Unit Conversion"].tap();
- }
11.tableview滚动到一个name以“Turtle Pie.”开头的元素:
根据name模糊查询控件,firstWithPredicate(“name beginswith ‘xxx’”),根据name完全匹配,firstWithName(“xxxx”),/根据key值匹配,firstWithValueForKey(value,key):
- UIATarget.localTarget().frontMostApp().mainWindow().tableViews()[0].scrollToElementWithPredicate("name beginswith ‘Turtle Pie’");
不使用预测功能:scrollToElementWithName和scrollToElementWithValueForKey
12.增加时间控制:
- //压栈时间片:
- UIATarget.localTarget().pushTimeout(2);
- //接着执行脚本任务;
- //时间片出栈
- UIATarget.localTarget().popTimeout();
还有一种方式,采用delay方式:
- UIATarget.localTarget().delay(2);
两种方式的区别是,在时间片内,第一种方法会不断尝试去执行压栈和出栈间的脚本任务,一旦可以执行就执行,不一定在时间片后才执行,而第二种方式是在时间片到后才执行脚本任务。
13.按钮点击:
- UIATarget.localTarget().frontMostApp().mainWindow().buttons()["xxxxx"].tap();
14截屏功能,事实证明模拟器是能使用截屏功能的:
- UIATarget.localTarget().captureScreenWithName("SS001-2_AddedIngredient");
15.验证结果:
- var cell = UIATarget.localTarget().frontMostApp().mainWindow().tableViews()[0].cells().firstWithPredicate("name beginswith ‘Tarte’");
- if (cell.isValid()) {
- UIALogger.logPass(testName);
- }
- else {
- UIALogger.logFail(testName);
- }
16.处理弹框,只需指定UIATarget.onAlert:
- UIATarget.onAlert = function onAlert(alert) {
- var title = alert.name();
- UIALogger.logWarning("Alert with title '" + title + "' encountered.");
- if (title == "The Alert We Expected") {
- alert.buttons()["Continue"].tap();
- return true; //alert handled, so bypass the default handler
- }
- // return false to use the default handler
- return false;
- }
返回FALSE代表点击取消,TRUE代表确定。
17.模拟后台一段时间:
- UIATarget.localTarget().deactivateAppForDuration(10);
手机方向旋转:
- UIATarget.localTarget().setDeviceOrientation(UIA_DEVICE_ORIENTATION_PORTRAIT);
18.拖动
- window.tableViews()[0].scrollDown();
- window.tableViews()[0].scrollUp();
- window.tableViews()[0].scrollLeft();
- window.tableViews()[0].scrollRight();
19.打印当前屏幕所有空间信息
- UIATarget.localTarget().logElementTree();
20.记录日志
- UIALogger.logStart(“start”);
- UIALogger.logPass(“pass”);
- UIALogger.logWarning(“warning”);
- UIALogger.logFail(“fail”);
- UIALogger.logMessage(“message”);
- UIALogger.logError(“error”);
- UIALogger.logDebug(“debug”);
- UIALogger.logIssue(“issue”);
21.九宫格搜索输入框
- UIATarget.localTarget().frontMostApp().mainWindow().searchBars()[0]
22.模拟键盘操作,
- UIATarget.localTarget().frontMostApp().keyboard().typeString(“aaa\n”);\n=回车
23.输入框输入,
- UIATarget.localTarget().frontMostApp().mainWindow().tableViews()["Empty list"].cells()["用户名:"].textFields()[0].setValue(“abcd”);
24.获取对象数组长度,
- UIATarget.localTarget().frontMostApp().mainWindow().buttons().length;
25.获取文本字符串,
- UIATarget.localTarget().frontMostApp().mainWindow().scrollViews()[0].staticTexts()[0].value();
26.打印当前元素的视图树:
- .logElementTree();
27.筛选框滚动,
- UIATarget.localTarget().frontMostApp().mainWindow().pickers()[0].wheels()[0].dragInsideWithOptions({startOffset:{x:0.38, y:0.66}, endOffset:{x:0.38, y:0.12}, duration:1.6});
ios UI自动化测试学习笔记的更多相关文章
- UI设计学习笔记(7-12)
UI学习笔记(7)--扁平化图标 认识扁平化 Flat Design 抛弃传统的渐变.阴影.高光等拟真视觉效果,打造看上去更平的界面.(颜色.形状) 扁平化图标有什么优缺点 优点: 简约不简单.有新鲜 ...
- IOS内存管理学习笔记
内存管理作为iOS中非常重要的部分,每一个iOS开发者都应该深入了解iOS内存管理,最近在学习iOS中整理出了一些知识点,先从MRC开始说起. 1.当一个对象在创建之后它的引用计数器为1,当调用这个对 ...
- [XMPP]iOS聊天软件学习笔记[一]
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...
- selenium2自动化测试学习笔记(三)
今天是学习selenium的第三天,今天的主题是自动登录126邮箱. 今天总结碰到的坑有三个: 1.frame内元素抓取,使用driver.switch_to.frame(frameId)方法切换锁定 ...
- selenium2自动化测试学习笔记(一)
从这周开始学习自动化测试,采用selenium2,目标是在本月学习到appium,并测试公司的真实APP项目. 系统环境:win10 语言:python3.6.4 工具:selenium2 IDE:p ...
- jquery UI 跟随学习笔记——拖拽(Draggable)
引言 这周暂时没有任务下达,所以老大给我的任务就是熟悉jquery相关插件,我就先选择了jquery UI插件,以及jquery库学习. 我用了两天的时候熟悉Interactions模块中的Dragg ...
- iOS开发ReactiveCocoa学习笔记(六)
RAC操作方法三. demo地址:https://github.com/SummerHH/ReactiveCocoa.git doNext deliverOn timeout interval del ...
- python自动化测试学习笔记-10YAML
之前学习的编写测试用例的方法,都是从excel中编写接口的测试用例,然后通过读取excel文件进行接口自动化测试,这种方式我们叫做数据驱动的方式,由于excel操作起来不灵活,无法实现关联关系的接口测 ...
- python自动化测试学习笔记-5常用模块
上一次学习了os模块,sys模块,json模块,random模块,string模块,time模块,hashlib模块,今天继续学习以下的常用模块: 1.datetime模块 2.pymysql模块(3 ...
随机推荐
- SecureCRT 个人使用爱好配置。
1.设置默认启动会话设置. 2.设置执行 ls命令显示文件夹,各种文件,不同的对比颜色 2.1 设置前: 2.2 设置后: 3. 如果出现会话框中文乱码 ,设置以下选项 4 . 更改 命令 ls -a ...
- SpringCloud微服务实战:一、Eureka注册中心服务端
1.项目启动类application.java类名上增加@EnableEurekaServer注解,声明是注册中心 1 import org.springframework.boot.SpringAp ...
- spring入门(一) 根据xml实例化一个对象
文档: https://docs.spring.io/spring/docs/5.0.9.RELEASE/spring-framework-reference/core.html#beans-fact ...
- 【PTA 天梯赛训练】电话聊天狂人(简单map)
输入格式: 输入首先给出正整数N(≤10^5),为通话记录条数.随后N行,每行给出一条通话记录.简单起见,这里只列出拨出方和接收方的11位数字构成的手机号码,其中以空格分隔. 输出格式: 在一行中给出 ...
- 黑帽seo基础手法之快照劫持
实际上,楼主曾经是搞安全出身的.当然早期也对黑帽手法多少有些了解,最早08年开始,见证了百度一代又一代的黑帽手法,可谓百花齐放,大神大牛级人物层出不穷,但我想黑帽seo,先不谈其性质好坏,单单就技术本 ...
- 详解Linux运维工程师
运维工程师是从一个呆逼进化为苦逼再成长为牛逼的过程,前提在于你要能忍能干能拼,还要具有敏锐的嗅觉感知前方潮流变化.如:今年大数据,人工智能比较火……(相对表示就是 Python 比较火) 之前写过运维 ...
- JZOJ 5941. 乘
Sample Input Sample Input1: 4 3 9 6 5 8 7 7 Sample Output Sample Output1: 0做法(转自JZOJ):考虑 a 是定值, 而 b ...
- 解决MySQL server has gone away问题的两种有效办法
最近做网站有一个站要用到WEB网页采集器功能,当一个PHP脚本在请求URL的时候,可能这个被请求的网页非常慢慢,超过了mysql的 wait-timeout时间,然后当网页内容被抓回来后,准备插入到M ...
- Educational Codeforces Round 47 (Rated for Div. 2) :D. Relatively Prime Graph
题目链接:http://codeforces.com/contest/1009/problem/D 解题心得: 题意就是给你n个点编号1-n,要你建立m条无向边在两个互质的点之间,最后所有点形成一个连 ...
- STL 一些常用的STL函数(持续更新
先说一下 一边要用到算法的东西一般要加#include<algorithm>头文件 一.栈和队列 1 栈 :一种线性表 特点 后进先出 头文件 #include<stack&g ...