2015-03-30 64 views
1

我试图使用TestComplete在iPad应用程序上执行自动化测试,但测试运行时遇到定位服务权限警报的问题。此警报在登录到应用程序后出现,但出于某种原因,它不会显示在对象浏览器中,我无法使用TestComplete来处理警报。不过,我可以在应用程序的其他地方处理自定义警报。未在对象浏览器中显示iOS系统权限警报视图

任何建议将不胜感激,因为我希望这些测试每天晚上都在全新构建中运行,但现在我必须在运行测试之前手动触发警报并将其解除。这显然不是优选的。

编辑:所以我相信我知道为什么会发生这种情况,这是因为AlertView属于应用程序“跳板”而不是我的应用程序。有没有解决方法?

回答

2

由于此权限警报是由系统而不是由应用程序显示的,因此TestComplete无权访问它,因此无法将其放到对象树中。您可以做的唯一处理此权限警报的方法是使用device.Touch方法的屏幕坐标来模拟触摸操作。

+0

这就是我的想法。非常不幸! – Braains 2015-03-31 11:52:30

+0

你会碰巧有一个支持这个的代码示例吗?我似乎无法通过点击按钮所在的屏幕来使其工作。 – Braains 2015-04-20 13:02:34

0

您需要设置the UIAutomation onAlert callback来捕捉位置警报。

UIATarget.onAlert = function onAlert(alert) { 
    var title = alert.name(); 
    UIALogger.logDebug("Caught onAlert: " + title); 
    if (title.indexOf("Would Like to Use Your Current Location") > -1) { 
     alert.buttons()["OK"].tap(); 
     delay(0.3); 
     return true; 
    } 
    return false; 
}; 
+0

你在答案中是正确的,但我没有使用TestComplete工具。这在Instrument中是一个相当简单的修复,但由于某些原因,TestComplete无法访问系统警报,因为它们来源于Springboard,而不是来自当前进程。这是一个不幸的功能,缺乏肯定。 – Braains 2015-04-07 16:41:40

+0

捕获系统警报是测试系统中缺少的一项相当重要的功能。这是否意味着他们无法测试任何使用位置,推送通知等的应用程序? – Ian 2015-04-07 17:18:25

+0

我不想代表TC团队发言,但似乎SpringBoard发布的任何警报都无法通过测试。另一个答案说,你可以使用屏幕坐标来触摸按钮的位置,但我还没有能够成功地做到这一点,但 – Braains 2015-04-13 12:50:07