【问题标题】:UIAutomation : Cancel button on Alert view is tapped without actually doing itUIAutomation:在警报视图上的取消按钮被点击而不实际执行
【发布时间】:2013-07-18 00:01:42
【问题描述】:

我在 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 的错误吗?

【问题讨论】:

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


    【解决方案1】:

    始终点击警报上的取消按钮以防止应用程序阻塞除非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 或完全省略返回值向警报处理机制发出信号,表明应点击取消按钮。

    【讨论】:

    • 我已经添加了这一行,但它不适合我。所以我需要在警报窗口上输入密码。我想知道我是否应该先编写 onAlert 函数,然后输入密码?还是反过来?谢谢!
    猜你喜欢
    • 1970-01-01
    • 2021-11-03
    • 1970-01-01
    • 1970-01-01
    • 2021-04-30
    • 1970-01-01
    • 1970-01-01
    • 2022-10-30
    • 1970-01-01
    相关资源
    最近更新 更多