快速入门自动化测试是非常有用的,以测试您的应用程序“,而你的睡眠”。它使您能够快速跟踪回归和性能问题,同时也开发新的功能,而不必担心打破你的应用程序。由于,苹果公司发布了iOS4.0的一个的框架UIAutomation,可用于实现自动化测试在真实设备上的iPhone模拟器上。上的文档UIAutomation是相当小的,而且也没有大量的资源在网络上。本教程将告诉你,如何整合UIAutomation在您的工作流程。最好的指针开始是苹果的文档的UIAutomation,苹果工具文档的一个很好的快速教程,当然,这些幻灯片/视频WWDC2010-会话306-自动化与仪器的用户界面测试。你需要一个免费的developper帐户来访问此资源的整合。另一个框架要提到是OCUnit的,它包含在Xcode中,可用于单元测试添加到您的应用程序。1.你的第一UIAutomation脚本o使用iOS模拟器o使用iOS设备2.处理与UIAElement和辅助功能oUIAElement层次o模拟用户交互3.简化你的生活的秘诀o介绍调整o导入外部脚本o通过命令行的力量o以交互方式记录互动o“当事情不工作,UIATarget.delay(1);”4.先进的互动o处理意外和预期的警报o多工作业o方向5.最终的o有用的链接o一个视频1。你的第一UIAutomation脚本UIAutomationJavascript编写的功能测试。有一种强烈的在UIAutomation和可访问性之间的关系,所以你会使用辅助的标签和值模拟和模拟用户界面交互的检查结果。让我们去了,写我们的第一个测试!使用iOS模拟器1.下载的同伴的项目TestAutomation.xcodeproj,并打开它。该项目是一个简单的2个选项卡的标签栏的应用程序。2.确保选择以下方案“TestAutomationiPhone5.0模拟器”(也许你已经切换到5.1,所以它可能是iPhone5.1)3.启动工具(产品简介)或⌘一4.在iPhone模拟器,选择自动化模板,然后在“个人资料”5.仪器启动,并立即开始录制。停止记录(红色按钮或⌘R)。6.在“脚本”窗口中,单击“添加”“创建”来创建一个新的脚本7.在“脚本”窗口中编辑器,请点击下面的代码8.目标=UIATarget.localTarget();9.VAR的应用程序target.frontMostApp();10.变种窗口=app.mainWindow();11.target.logElementTree();12.重新启动脚本⌘R(你不需要保存)。脚本运行后,日志出现,你可以阻止它。瞧!您已经写了您的第一UIAutomation测试!使用iOS设备一个真正的设备,也可以运行这个测试,而不是模拟器。自动测试设备,支持多任务的iPhone3GS,iPad的,仅适用于运行iOS4.0。UIAutomation不幸的是,在iPhone3G上,无论是操作系统版本。要运行测试的设备上:1.将iPhone连接到USB2.选择计划“TestAutomationiOS装置”3.检查发布配置与一个Developper配置文件(而不是一个Ad-Hoc分布情况)。默认情况下,分析是在释放(没有任何理由来分析一个应用程序在调试!)4.个人应用程序(⌘我)5.比以前在模拟器上按照相同的步骤。2。处理与UIAElement和辅助功能UIAElement层次有很强的关系之间无障碍UIAutomation:如果配备无障碍访问控制,您将能够设置/获取值,产生动作等的控制是不是“看得见”的辅助工具,将无法访问通过自动化。您可以允许访问/自动化控制是否使用InterfaceBuilder,或通过编程方式设置属性isAccessibilityElement。你必须支付一定的关注时,设置辅助容器视图(即包含其他UIKit元素)。启用无障碍的整个视图可以“隐藏”其子视图访问/自动化。比如,在项目中,控制器的视图出口应不能够访问,否则的子控制将不访问。如果您有任何问题,logElementTree是您的朋友:列出所有当前可见的元素可以访问。每个UIKit的控制,可以访问可以表示为一个JavaScript对象,UIAElement。UIAElement有几个属性,名称,价值,元素,父。你的主窗口包含了很多的控制,它定义了一个UIKit的层次结构。这UIKit的层次结构,对应的UIAElement的层次结构。例如,通过调用logElementTree在前面的测试中,我们有以下三种:+-UIATarget:名称:iPhone模拟器正确的:{{0,0},{320480}}|+-UIAApplication:名称:TestAutomation的正确:{{0,20},{320460}}||-UIAWindow:正确的:{{0,0},{320480}}|||+-UIAStaticText的:姓名:一是该价值:首先查看正确的:{{54,52},{212,43}}|||+-UIATextField的名称:用户的文本值:点击一些文字在这里!正确的:{{20179},{280,31}}|||+-UIAStaticText的:姓名:文字是:值:文字是:正确的:{{20231},{112,21}}|||+-UIAStaticText:值:正确的:{{145231},{155,21}}|||+-UIATabBar:正确的:{{0431},{320,49}}||||+-UIAImage:正确的:{{0431},{320,49}}||||+-UIAButton:名称:第一个值:1RECT:{{2432},{156,48}}||||+-UIAButton:名称:二正确的:{{162432},{156,48}}要访问该文本字段,你可以这样写:。mainWindow的变种textField的。frontMostApp=UIATarget.localTarget()()()。文本字段()[0];您可以选择基于0的索引或元素的名称来访问元素。例如,以前的文本字段也可以被这样的访问:VARtextField的。frontMostApp=UIATarget.localTarget()()。主窗口()。文本框()[“用户文本”];较新版本更清晰,更应该是首选。在InterfaceBuilder中,您可以设置的UIAElement名:或计划性:myTextField.accessibilityEnabled=YES;myTextField.accessibilityLabel=@“用户文本”;你可以看到现在所使用的辅助功能属性UIAutomation针对不同的控件。这是非常聪明的,因为:1)只有一个框架,以学习;2)编写自动化测试,你也将确保您的应用程序可以访问!所以,通过调用下面的每个UIAElement可以访问它的孩子要访问的第一个选项卡的标签栏,你可以这样写:变种的tabbar=UIATarget.localTarget()。frontMostApp()。TabBar中();VARtabButtontabBar.buttons()[“第一”];UIAElement层次是非常重要的,你要处理不断。记住,你可以转储的层次结构,每次在你的脚本由调用logElementTree上UIAApplication:。logElementTree。frontMostAppUIATarget.localTarget()()();在模拟器上,您还可以激活的可访问性检查。启动模拟器,前往“设置”“通用”“辅助功能”“辅助功能”督察“,并将其设置为”开“。这个小彩虹中的可访问性检查。折叠时,辅助功能是关闭的,并扩展了无障碍时。要激活/desactivate辅助功能,你只需要点击箭头按钮。现在,到我们的测试应用程序,启动它,并启动督察。然后,点击文本字段和检查的名称和值属性的相关的UIAElement(也NSObject的accessibilityLabel和性能相当accessibilityValue)。检查员将帮助您调试和编写脚本。模拟用户交互让我们更进一步,模拟用户交互。轻按一键,您只需拨打自来水()这个元素:变种的tabbar=UIATarget.localTarget()。frontMostApp()。TabBar中();VARtabButtontabBar.buttons()[“第一”];//点击标签栏!tabButton.tap();您也可以拨打doubleTap()中,twoFingerTap()UIAButtons。如果你不想要的元素为目标,但只在指定的坐标画面在屏幕上的互动,你可以使用:水龙头:UIATarget.localTarget()。点选(X:100,Y:200});UIATarget.localTarget()。doubleTap({:100,Y:200});UIATarget.localTarget()。twoFingerTap({:100,Y:200});捏:UIATarget.localTarget()。pinchOpenFromToForDuration({:20,Y:200},{×:300,Y:200},2);UIATarget.localTarget()。pinchCloseFromToForDuration({:20,Y:200},{×:300,Y:200},2);拖动和弗里克:UIATarget.localTarget()。dragFromToForDuration({:160,Y:200},{160,Y:400},1);UIATarget.localTarget()。flickFromTo({:160,Y:200},{160,Y:400});在您指定的时间,只在一定范围内接受即:拖时间,值必须大于或等于0.5秒或不到60岁。现在,让我们把在实践中:1.停止(⌘R)仪器2.在“脚本”窗口中,删除当前的脚本3.点击“添加”“导入”,然后选择TestAutomation/TestUI/Test-1.js4.点击记录(⌘R)和观看的发生。该脚本是:测试名=“测试”;目标=UIATarget.localTarget();VAR的应用程序target.frontMostApp();变种窗口=app.mainWindow();UIALogger.logStart(测试名);app.logElementTree();//-选择元素UIALogger.logMessage(“选择第一个选项卡”);VAR标签栏app.tabBar();selectedTabName=tabBar.selectedButton()。名称();(selectedTabName!“第一”){tabBar.buttons()[“第一”。点击();}//-点选文本框就会自动UIALogger.logMessage(“塔上的文本字段”);recipeName=“相当长的配方名称”;window.textFields()[0]=。的setValue(recipeName)的;target.delay(2);//-点选文本框就会自动UIALogger.logMessage(“关闭键盘”);app.logElementTree();app.keyboard()按钮()“回归”。点击();VARtextValuewindow.staticTexts()“RecipeName”。值();如果(textValue===recipeName)UIALogger.logPass(测试名);}其他{UIALogger.logFail(测试名);}这个脚本启动应用程序,选择第一个选项卡,如果它不被选中的文本字段的值设置为“相当长的配方名称,并驳回键盘。注意到一些新的功能:延迟(数字时间间隔内)UIATarget允许引入一些延迟之间的相互作用,logMessage(字符串消息)上UIALogger可以用来记录的测试输出和logPass(