首页 > 移动平台 > 详细

ios UI自动化测试

时间:2014-04-16 19:20:07      阅读:739      评论:0      收藏:0      [点我收藏+]

转载:http://www.cnblogs.com/dokaygang128/p/3517674.html

 

一、一些注意事项:

1.做自动化测试时注意如果是真机话首先要设置不锁屏。

2.自动化测试过程中如果程序后台或崩溃了。脚本运行将会暂停,直到程序再次回到前台。

3.必须明确指定关闭自动测试,测试完成或中断都不会自动关闭测试。

4.测试也是根据视图树的元素位置获取元素进行测试,根视图元素是UIATarget。

 

二、部分功能说明:

1.获取当前程序(在激活状态):

bubuko.com,布布扣
UIATarget.localTarget().frontMostApp();
bubuko.com,布布扣

2.获取目标程序的主Window:

bubuko.com,布布扣
UIATarget.localTarget().frontMostApp().mainWindow();
bubuko.com,布布扣

3.获取一个cell中的文本元素:

bubuko.com,布布扣
UIATarget.localTarget().frontMostApp().mainWindow().tableViews()[0].cells()[0].elements()["Chocolate Cake"];
bubuko.com,布布扣

4.触发一个导航栏中“Add”按钮点击:

bubuko.com,布布扣
UIATarget.localTarget().frontMostApp().navigationBar().buttons()["Add"].tap();
bubuko.com,布布扣

5.触发点击屏幕上的某个位置:

bubuko.com,布布扣
UIATarget.localTarget().doubleTap({x:100, y:200});

UIATarget.localTarget().twoFingerTap({x:100, y:200});
bubuko.com,布布扣

6.获取tabBar并点击:

bubuko.com,布布扣
appWindow.tabBar().buttons()["Unit Conversion"].tap();
bubuko.com,布布扣

7.放大:

bubuko.com,布布扣
UIATarget.localTarget().pinchOpenFromToForDuration({x:20, y:200}, {x:300, y:200}, 2);
bubuko.com,布布扣

缩小(后面是个时间参数,表示持续时间):

bubuko.com,布布扣
UIATarget.localTarget().pinchCloseFromToForDuration({x:20, y:200}, {x:300, y:200}, 2);
bubuko.com,布布扣

8.拖拽和快速滑动:

bubuko.com,布布扣
UIATarget.localTarget().dragFromToForDuration({x:160, y:200}, {x:160, y:400}, 1);

UIATarget.localTarget().flickFromTo({x:160, y:200}, {x:160, y:400});
bubuko.com,布布扣

9.为文本框输入内容:

bubuko.com,布布扣
var recipeName = "Unusually Long Name for a Recipe";
UIATarget.localTarget().frontMostApp().mainWindow().textFields()[0].setValue(recipeName);
bubuko.com,布布扣

10.在tabBar中导航

bubuko.com,布布扣
bubuko.com,布布扣
var tabBar = UIATarget.localTarget().frontMostApp().mainWindow().tabBar();

 var selectedTabName = tabBar.selectedButton().name();

 if (selectedTabName != "Unit Conversion") { 

tabBar.buttons()["Unit Conversion"].tap();

}
bubuko.com,布布扣
bubuko.com,布布扣

11.tableview滚动到一个name以“Turtle Pie.”开头的元素:

根据name模糊查询控件,firstWithPredicate(“name beginswith ‘xxx’”),根据name完全匹配,firstWithName(“xxxx”),/根据key值匹配,firstWithValueForKey(value,key)

bubuko.com,布布扣
UIATarget.localTarget().frontMostApp().mainWindow().tableViews()[0].scrollToElementWithPredicate("name beginswith ‘Turtle Pie’");
bubuko.com,布布扣

不使用预测功能:scrollToElementWithName和scrollToElementWithValueForKey

12.增加时间控制:

bubuko.com,布布扣
bubuko.com,布布扣
//压栈时间片:

UIATarget.localTarget().pushTimeout(2);

//接着执行脚本任务;

//时间片出栈

UIATarget.localTarget().popTimeout();
bubuko.com,布布扣
bubuko.com,布布扣

还有一种方式,采用delay方式:

bubuko.com,布布扣
UIATarget.localTarget().delay(2);
bubuko.com,布布扣

两种方式的区别是,在时间片内,第一种方法会不断尝试去执行压栈和出栈间的脚本任务,一旦可以执行就执行,不一定在时间片后才执行,而第二种方式是在时间片到后才执行脚本任务。

13.按钮点击:

bubuko.com,布布扣
UIATarget.localTarget().frontMostApp().mainWindow().buttons()["xxxxx"].tap();
bubuko.com,布布扣

14截屏功能,事实证明模拟器是能使用截屏功能的:

bubuko.com,布布扣
UIATarget.localTarget().captureScreenWithName("SS001-2_AddedIngredient");
bubuko.com,布布扣

15.验证结果:

bubuko.com,布布扣
bubuko.com,布布扣
var cell = UIATarget.localTarget().frontMostApp().mainWindow().tableViews()[0].cells().firstWithPredicate("name beginswith ‘Tarte’");

if (cell.isValid()) {

UIALogger.logPass(testName);

}

else {

UIALogger.logFail(testName);

}
bubuko.com,布布扣
bubuko.com,布布扣

16.处理弹框,只需指定UIATarget.onAlert:

bubuko.com,布布扣
bubuko.com,布布扣
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;

}
bubuko.com,布布扣
bubuko.com,布布扣

返回FALSE代表点击取消,TRUE代表确定。

17.模拟后台一段时间:

bubuko.com,布布扣
UIATarget.localTarget().deactivateAppForDuration(10);
bubuko.com,布布扣

手机方向旋转:

bubuko.com,布布扣
UIATarget.localTarget().setDeviceOrientation(UIA_DEVICE_ORIENTATION_PORTRAIT);
bubuko.com,布布扣

18.拖动?

bubuko.com,布布扣
bubuko.com,布布扣
window.tableViews()[0].scrollDown();?

window.tableViews()[0].scrollUp();?

window.tableViews()[0].scrollLeft();?

window.tableViews()[0].scrollRight();
bubuko.com,布布扣
bubuko.com,布布扣

19.打印当前屏幕所有空间信息

bubuko.com,布布扣
UIATarget.localTarget().logElementTree();
bubuko.com,布布扣

20.记录日志?

bubuko.com,布布扣
bubuko.com,布布扣
UIALogger.logStart(“start”);?

UIALogger.logPass(“pass”);?

UIALogger.logWarning(“warning”);?

UIALogger.logFail(“fail”);?

UIALogger.logMessage(“message”);?

UIALogger.logError(“error”);?

UIALogger.logDebug(“debug”);?

UIALogger.logIssue(“issue”);
bubuko.com,布布扣
bubuko.com,布布扣

 

21.九宫格搜索输入框?

bubuko.com,布布扣
UIATarget.localTarget().frontMostApp().mainWindow().searchBars()[0]
bubuko.com,布布扣

22.模拟键盘操作,

bubuko.com,布布扣
?UIATarget.localTarget().frontMostApp().keyboard().typeString(“aaa\n”);\n=回车
bubuko.com,布布扣

23.输入框输入,

bubuko.com,布布扣
?UIATarget.localTarget().frontMostApp().mainWindow().tableViews()["Empty list"].cells()["用户名:"].textFields()[0].setValue(“abcd”);
bubuko.com,布布扣

24.获取对象数组长度,

bubuko.com,布布扣
UIATarget.localTarget().frontMostApp().mainWindow().buttons().length;
bubuko.com,布布扣

25.获取文本字符串,

bubuko.com,布布扣
UIATarget.localTarget().frontMostApp().mainWindow().scrollViews()[0].staticTexts()[0].value();
bubuko.com,布布扣

26.打印当前元素的视图树:

bubuko.com,布布扣
.logElementTree();
bubuko.com,布布扣

27.筛选框滚动,

bubuko.com,布布扣
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});
bubuko.com,布布扣

 

ios UI自动化测试,布布扣,bubuko.com

ios UI自动化测试

原文:http://www.cnblogs.com/ccxniit2004/p/3669004.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!