Note: 这个文档先前被命名为 UI Automation Reference Collection
使用UI Automation JavaScript库来写测试脚本,当应用连接设备运行时这些测试脚本可以测试你的应用用户交互元素。你用javascript写测试脚本,调用UI Automation API模拟用户交互。系统返回日志信息到电脑主机上。
Note: UI Automation模拟所有用脚本初始化的用户交互行为。为了简洁和清晰,这个文档以用户的角度描述了这些行为。 访问和使用用户界面元素
本质上,你的测试脚本是一系列有序的命令,每个命令都可以访问你应用的用户界面元素来执行相应地行为或者使用相关的信息。在你应用中的所有的用户界面元素可以通过脚本被表示出来,这些脚本是一些被UIAElements类和子类定义的有序的层级的对象。为了访问一个特定的UI元素,脚本简单的调用元素层级,通过调用UIATarget.localTarget()来获取top-level目标对象。例如,在你的应用的主窗口能通过如下方式获取:
UIATarget.localTarget().frontMostApp().mainWindow().buttons()[0]
如果第一个按钮在你的代码中被标识为Edit按钮,下面的方式也可以奏效:
UIATarget.localTarget().frontMostApp().mainWindow().buttons()["Edit"]
脚本可以使用这三个中的任何一种方式来点击按钮:
-
UIATarget.localTarget().frontMostApp().mainWindow().buttons()[0].tap();
-
UIATarget.localTarget().frontMostApp().mainWindow().buttons()["Edit"].tap();
-
var editButton=UIATarget.localTarget().frontMostApp().mainWindow().buttons()[0];
editButton.tap();
自动化工具维护一个代表你应用的用户界面的完整的元素层。对于视图层,使用logElementTree
方法可以写入它的框架到日志里:
UIATarget.localTarget().frontMostApp().logElementTree()
用日志记录结果
为了记录测试期间数据,脚本使用UIALogger类方法来发送信息到运行在电脑主机上的自动化工具中。可以使用各种方法来协调组织和分析记录的数据。例如:
-
使用logStart方法来表示一个指定测试的开始
-
UIALogger.logStart("Test1");
-
-
使用logFail方法来结束和标记它的失败
-
UIALogger.logFail("Failed to foo.");
-
-
使用
logDebug
方法来发送一个通用的调试信息-
UIALogger.logDebug("Done with level 3.");
-
使用Instruments,你可以查看Automation工具中在描述窗格来搜集到的数据。
Handling Alerts操控Alerts提醒
当执行你的脚本时,UI Automation遇到一个alert提醒时,它调用一个alert提醒处理程序,传递一个引用到UIAAlert对象来展示alert提醒。为了脚本正常的执行继续,你的脚本应该合适的操作alert警告。
为了确保你的alert警告不和测试接触, Automation共工具也执行一个简单的默认的alert操作。如果你的脚本alert操作返回false,默认的操作会通过店家放弃按钮结束alert警告(如果放弃按钮存在);否则,它点击默认按钮
下面的代码执行简单的alert操作来记录一个日志信息并且返回false,从而根据默认的操作来结束alert警告
UIATarget.onAlert = function onAlert(alert) { |
var title = alert.name(); |
|
// add a warning to the log for each alert encountered |
UIALogger.logWarning("Alert with title '" + title + "' encountered!"); |
UIATarget.localTarget().captureScreenWithName("alert_" + (new Date()).UTC()); |
|
// test if your script should handle the alert, and if so, return true |
|
// otherwise, return false to use the default handler |
return false; |
} |
文档翻译,如有错误,请指出。