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 handlerreturn 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});
转载于:https://www.cnblogs.com/ccxniit2004/p/3669004.html
ios UI自动化测试相关推荐
- 基于 KIF 的 iOS UI 自动化测试和持续集成
客户端 UI 自动化测试是大多数测试团队的研究重点,本文介绍猫眼测试团队在猫眼 iOS 客户端实践的基于 KIF 的 UI 自动化测试和持续集成过程. 一.测试框架的选择 iOS UI 自动化测试框架 ...
- ios ui自动化测试_Xcuitest的ios自动化ui测试
ios ui自动化测试 Who knew automated UI Testing could be so easy! Well, I guess Apple did. Automated UI Te ...
- appium python框架结构,GitHub - wyybingo/python-appium: 基于PageObject UI自动化测试框架,支持Android/iOS...
0910 UPDATE 新增控件集参数化,相同测试步骤的Android/iOS可共用一份测试用例 不同测试步骤的用例还需要单独写 0904 UPDATE 优化Android log及crsahinfo ...
- pythonwebview自动化测试_GitHub - githubwzg/python-appium: 基于PageObject UI自动化测试框架,支持Android/iOS...
0910 UPDATE 新增控件集参数化,相同测试步骤的Android/iOS可共用一份测试用例 不同测试步骤的用例还需要单独写 0904 UPDATE 优化Android log及crsahinfo ...
- 阿里p8呕心沥血整理出来的,APP UI自动化测试思路总结,速看
首先想要说明一下,APP自动化测试可能很多公司不用,但也是大部分自动化测试工程师.高级测试工程师岗位招聘信息上要求的,所以为了更好的待遇,我们还是需要花时间去掌握的,毕竟谁也不会跟钱过不去.接下来,一 ...
- 网易UI自动化测试探索:Airtest+Poco
1. 自动化测试 自动化测试的目的,就是为了"更快更好"地发现产品问题,有效提升产品质量.目前比较主流的自动化测试包含单元测试自动化.接口自动化和UI自动化. 相比接口自动化测试来 ...
- 网易技术干货 | 云信移动端音视频UI自动化测试实践
本篇文章来自网易云信高级测试工程师,在从事测试工作的五年时间中,她做过Android端.Windows端.Web端.服务端测试,在UI自动化.接口自动化.音视频测试方面均有所积累.本文将结合应用实践, ...
- APP UI自动化测试:框架选择、环境搭建、脚本编写……全总结
首先想要说明一下,APP自动化测试可能很多公司不用,但也是大部分自动化测试工程师.高级测试工程师岗位招聘信息上要求的,所以为了更好的待遇,我们还是需要花时间去掌握的,毕竟谁也不会跟钱过不去. 接下来, ...
- 整装待发 QTA UI自动化测试框架迎来大更新
2019独角兽企业重金招聘Python工程师标准>>> 整装待发 QTA UI自动化测试框架迎来大更新 QTA是什么 QTA是一个跨平台的测试自动化工具,适用于后台.原生或混合型客户 ...
最新文章
- dosbox更新加载的文件夹
- Python标准库:itertools迭代器函数
- C# 中的 ConfigurationManager类引用方法
- SignalR的使用
- 牛客网编程题07--提取不重复的整数
- (转)一个用D3D绘制2D图形的例子
- [导入]C#面向对象设计模式纵横谈(21):(行为型模式) Memento 备忘录模式.zip(9.73 MB)...
- Spring Boot和Dubbo整合
- 智能信息处理专业是干嘛的?
- 计算机一级常用计算公式,2012年计算机一级B考点详解(4)
- 如何搭建自己的云盘然后进行资源共享?——可道云版
- 【SQL】小CASE
- Word限制编辑忘记密码怎么解锁
- python什么为假_Python返回真假值(True or False)小技巧
- python默认数据转换_Python之数据转换
- 对List中的对象的模糊查询
- Docker从入门到放弃
- 架狗屎:聊一聊 Spring Boot 服务监控机制
- python下tkinter模块和mysql构建图书管理系统实验
- xampp下载,踩得mysql的坑!!使用本机之前装入的mysql+idea配置PHP
热门文章
- Spring事务原理(1),区区一个SpringBoot问题就被干趴下了
- Python中的Optional和带默认值的参数
- 【PAT (Advanced Level) Practice】1086 Tree Traversals Again (25 分)
- 【机器学习入门到精通系列】多变量线性回归(附详细代码)
- 【Java Web开发指南】ELJSTL笔记
- Android移动开发之【Android实战项目】DAY6-安卓多线程
- 装Linux后分区丢失,找到了linux分区顺序错乱修复方法
- python怎样给对象赋值_Python对象赋值、浅拷贝和深拷贝
- apache开启gzip压缩
- 长沙网络推广教你如何在网站优化中让URL标准化?