ios UI自动化测试
转载:http://www.cnblogs.com/dokaygang128/p/3517674.html
一、一些注意事项:
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自动化测试的更多相关文章
- ios UI自动化测试学习笔记
一.一些注意事项: 1.做自动化测试时注意如果是真机话首先要设置不锁屏. 2.自动化测试过程中如果程序后台或崩溃了.脚本运行将会暂停,直到程序再次回到前台. 3.必须明确指定关闭自动测试,测试完成或中 ...
- <自动化测试方案_8>第八章、手机端UI自动化测试
第八章.手机端UI自动化测试 (一)APP测试分类 1,原生APP:Native页面是使用原生系统内核的,相当于直接在系统上操作 2,H5APP:先调用系统的浏览器内核,相当于是在网页中进行操作,较原 ...
- 【转】 UI自动化测试的关注点
我发现了,大家极度关心自动化测试,尤其是UI自动化测试,虽然现在作为专项测试,离开这些越来越远了,但总能遥想以前,我总能想起自己做nokia的WindowsLive的ui自动化,做web的自动化测试, ...
- 网易与Google合作发布开源UI自动化测试方案 牛逼:Google 方面评价,这可能是目前世界上最好的 Android 游戏自动化测试方案。
美西时间 3 月 19 日,在 GDC 开幕第一天的 Google 开发者专场,Google 发布了一款由网易研发的 UI 自动化测试方案:Airtest Project.Google 方面评价,这可 ...
- APP的UI自动化测试框架及平台化探索
顾铮,10年+测试及测试开发相关经验,2014年加入京东,曾主导设计开发UI测试框架,参与CI测试平台建设,现负责iOS侧的工具,框架建设.在UI自动化,性能测试,单元测试方面有较深入研究,在App, ...
- Airtest网易开源的一款UI自动化测试工具
Airtest网易开源的一款UI自动化测试工具 1 Airtest 简介Airtest Project是网易游戏内部工具团队开发并开源的一款UI自动化测试工具,据说曾经获得谷歌力挺. AirtestI ...
- Python+appium+unittest UI自动化测试
什么是UI自动化 自动化分层 单元自动化测试,指对软件中最小可测试单元进行检查和验证,一般需要借助单元测试框架,如java的JUnit,python的unittest等 接口自动化测试,主要检查验证模 ...
- atx测试框架实现手机应用UI自动化测试
最近工作中遇到游戏APP需要实现UI自动化测试,这个app中真的是典型的混合App,有Android原生控件,有webview控件,以及游戏操作页面.研究了Appium,发现appium实现跨应用操作 ...
- 网易与Google合作,于GDC开幕首日发布开源UI自动化测试方案
[TechWeb报道]美西时间3月19日,在GDC开幕第一天的Google开发者专场,Google发布了一款由网易研发的UI自动化测试方案:Airtest Project. Google方面评价,这可 ...
随机推荐
- Ubuntu下使用gcc编译c文件,未识别cos,sin
Ubuntu下使用gcc编译c文件,虽然我调用了math.h的头文件,但是未识别cos,sin 报错:( fft.c ) /tmp/ccwXjD8C.o: In function `fft': fft ...
- 2.CSS 颜色代码大全
确实使用,不用重复造轮子了!!! 摘自:http://www.cnblogs.com/circlebreak/p/6140602.html
- Python之线程与GIL
前言 以下内容是个人学习之后的感悟,转载请注明出处~ 线程是什么 线程是程序中一个单一的顺序控制流程.进程内一个相对独立的.可调度的执行单元,是系统独立调度和分派CPU的 基本单 ...
- 你忘记的java的数据类型信息
java有8种基本数据类型 int long short byte float double char boolean: 三种情况造成数据溢出 无穷大,无穷小, NAN: 常量 声明为final的变量 ...
- Struts文件上传下载
Struts配置文件: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PU ...
- Angular6之ng build | ng build --aot | ng build --prod 差异
由于写了大半年的项目终于要告一段落并且即将进行第二阶段优化开发,emmm 基础版本已经二十多个模块了,必不可少的优化是很重要的,尽管项目上使用多层嵌套懒加载,但是在首屏加载的时候,任然很慢啊,因为一直 ...
- IT行业技术及程序员相关网站荟萃
最近我花了一些时间收集了一些与自己工作相关的常用的网址,由于时间关系,暂时只是收集了这么多,以后有时间再随时添加. 1.程序员网址导航pg265 http://www.pg265.com/TNT程序网 ...
- 2018全球十大测试工具Top2 Katalon
引言 由Capgemini,Sogeti和Micro Focus发布的2017-2018年世界质量报告中,Katalon超越老牌测试工具UFT(源自QTP)成为黑马新秀,在全球十大自动化测试工具中排名 ...
- 浏览器插件--TamperMonkey
可以在此插件中添加一些脚本: 1,破解VIP会员视频集合,目前里里面的 “石头解析“,”无名小站“,”vip看看 ”可以解析爱奇艺等的视屏网站的会员视频 // ==UserScript== // @n ...
- 【BZOJ 3233】 [Ahoi2013]找硬币
[题目 描述] 小蛇是金融部部长. 最近她决定制造一系列新的货币. 假设她要制造的货币 的面值为 x1, x2, x3… 那么 x1 必须为 1, xb 必须为 xa 的正整数倍(b>a). 例 ...