4

首次启动我的应用程序时,我会收到一个权限警报,询问我是否允许该应用程序使用我当前的位置。我的onAlert方法成功消除了我设备上的警报。当我在模拟器上运行它时,它永远不会被调用。其他内部警报由onAlert模拟器上的方法处理。SpringBoard模拟器不处理来自的权限警报。有任何想法吗?

UIATarget.onAlert = function onAlert(alert)
{
    var title = alert.name();
    UIALogger.logMessage(title);
    return false;
}
4

3 回答 3

1

之所以会出现此问题,是因为您看到的警报来自系统本身——应用程序实际启动和您的自动化环境初始化之前。

要看到这种情况发生,请在函数定义之前添加一个调试行UIATarget.onAlert

UIALogger.logDebug("Now setting up the alert function");
UIATarget.onAlert = function onAlert(alert) {}

接下来,Reset Content and Settings...在您的模拟器上并重新运行您的自动化。您应该注意到,直到您手动关闭有关使用当前位置的警报 ,调试行才会出现。

我看不出这将如何从 javascript 代码中修复。您必须延迟警报,直到应用程序正确启动,或按照此答案中显示的示例进行操作。

于 2013-12-11T16:02:25.020 回答
0

如果默认处理程序不适合您,那么您可以简单地使用“return true”而不是“return false”,以便您可以手动关闭弹出框。在“返回真”语句之前,您可以编写一些语句来点击您想要的按钮(关闭按钮)。

于 2013-01-22T14:20:31.930 回答
0

我在启动后立即显示警报的应用程序遇到了同样的问题。当我记录元素树时,我可以看到额外的警报窗口,我可以让 UIAutomation 点击​​警报中的 OK 按钮。但是从未调用过警报处理程序。
原因是警报出现在 UIAutomation 正确设置以处理它之前。如果我延迟了警报的呈现,UIAutomation 确实抓住了它。

于 2013-01-30T06:44:54.937 回答