未在对象浏览器中显示iOS系统权限警报视图
我试图使用TestComplete在iPad应用程序上执行自动化测试,但测试运行时遇到定位服务权限警报的问题。此警报在登录到应用程序后出现,但出于某种原因,它不会显示在对象浏览器中,我无法使用TestComplete来处理警报。不过,我可以在应用程序的其他地方处理自定义警报。未在对象浏览器中显示iOS系统权限警报视图
任何建议将不胜感激,因为我希望这些测试每天晚上都在全新构建中运行,但现在我必须在运行测试之前手动触发警报并将其解除。这显然不是优选的。
编辑:所以我相信我知道为什么会发生这种情况,这是因为AlertView属于应用程序“跳板”而不是我的应用程序。有没有解决方法?
由于此权限警报是由系统而不是由应用程序显示的,因此TestComplete无权访问它,因此无法将其放到对象树中。您可以做的唯一处理此权限警报的方法是使用device.Touch方法的屏幕坐标来模拟触摸操作。
您需要设置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;
};
你在答案中是正确的,但我没有使用TestComplete工具。这在Instrument中是一个相当简单的修复,但由于某些原因,TestComplete无法访问系统警报,因为它们来源于Springboard,而不是来自当前进程。这是一个不幸的功能,缺乏肯定。 – Braains 2015-04-07 16:41:40
捕获系统警报是测试系统中缺少的一项相当重要的功能。这是否意味着他们无法测试任何使用位置,推送通知等的应用程序? – Ian 2015-04-07 17:18:25
我不想代表TC团队发言,但似乎SpringBoard发布的任何警报都无法通过测试。另一个答案说,你可以使用屏幕坐标来触摸按钮的位置,但我还没有能够成功地做到这一点,但 – Braains 2015-04-13 12:50:07
这就是我的想法。非常不幸! – Braains 2015-03-31 11:52:30
你会碰巧有一个支持这个的代码示例吗?我似乎无法通过点击按钮所在的屏幕来使其工作。 – Braains 2015-04-20 13:02:34