UIAutomation:点击警报视图上的取消按钮而不实际执行此操作

时间:2013-07-18 20:47:13

标签: ios uialertview instruments ui-automation ios-ui-automation

我在UIAutomation中遇到了这个奇怪的问题。

我正在检查警报。在那,我试图记录警报标题和警报消息。我的代码是:

UIATarget.onAlert = function onAlert(alert) {
UIALogger.logMessage("alert Shown");
UIALogger.logMessage(frontApp.alert().name());
UIALogger.logMessage(frontApp.alert().staticTexts()[1].value());
}

var target = UIATarget.localTarget().frontMostApp().mainWindow();
target.scrollViews()[0].buttons()["saveB"].tap();
UIATarget.localTarget().delay(2);

我没有点击警报中的取消按钮来解雇它。但是,它会自动被窃听。我不知道为什么。即使在logMessages中,我也看到了

target.frontMostApp().alert().cancelButton().tap()

此行自动执行。我的脚本文件中的任何地方都没有此行。这是iOS中的错误吗?

1 个答案:

答案 0 :(得分:9)

始终点按提醒上的取消按钮,以防止应用程序阻止,除非 onAlert回调返回true。通过返回true,您告诉警报处理机制将处理点击相应按钮以解除警报。

将您的提醒回调更改为:

UIATarget.onAlert = function onAlert(alert) {
    UIALogger.logMessage("alert Shown");
    UIALogger.logMessage(frontApp.alert().name());
    UIALogger.logMessage(frontApp.alert().staticTexts()[1].value());
    return true;   // <-- Adding this line
}

相反,返回false或遗漏一个返回值会向警报处理机制发出信号,告知应该点击取消按钮。