UI自动化错误:UI TESTING FAILURE-APP未能在30.0秒内停顿

时间:2015-10-19 14:06:39

标签: objective-c xcode7 ios-ui-automation

由于xCode已更新,因此无法运行任何ui测试用例。当它预期做一个简单的敲击操作时,它给我这个错误,例如:

 XCUIApplication *app = [[XCUIApplication alloc] init];
  XCUIElement *passwordSecureTextField = app.secureTextFields[@"Password"];
  [passwordSecureTextField tap];

任何人都有任何想法为什么我会收到此错误?我在谷歌和这里搜索过但没有找到任何解决方案。

谢谢。

5 个答案:

答案 0 :(得分:2)

确保在UI自动化测试期间屏幕上没有任何动画。我们在登录屏幕上有一个文本警报闪烁,用于我们的应用程序的调试/测试版本,它会导致“失败后停止”错误,直到它被删除。

还有一些关于此错误的帖子提到UIRefreshControl的问题,所以我怀疑动画或UIActivityIndi​​catorView会导致同样的问题。

答案 1 :(得分:0)

打开“All Exceptions”断点可能会有所帮助。我用它,我记得得到同样的错误。它将在有问题的代码中断行,并且应该向您显示错误的堆栈跟踪以及更多信息。

答案 2 :(得分:0)

我遇到了类似的错误 - 以及模拟器运行速度非常慢。在我的情况下,它很简单地通过这里接受的答案中给出的方法来修复:Xcode simulator extremely slow

为了节省您的点击:问题是我在某个时刻意外按下了Cmd + T,启用了#34;慢动画"。

答案 3 :(得分:0)

我不得不关闭“个人热点”以获得一个有效的测试环境(因为顶部的蓝色条显然扰乱了XCTestRunner) 但是,由于一些测试需要互联网连接,我无法在野外进行测试: - (

答案 4 :(得分:0)

Anthony F的回答说明了一切。可能还有一些东西仍然是动画。系统似乎等待应用程序UI“解决”(进入空闲状态),当发生这种情况时,它会执行点击操作。然而,当UI不断运行动画时,它永远不会解决。

Xcode控制台输出

在Xcode中启用控制台输出,以查看运行测试时会发生什么。

以下是日志的示例,当它运行良好时。系统等待应用程序空闲,当发生这种情况时,它会在层次结构中找到按钮。

t =    16.95s     Tap "@go" Button
t =    16.95s         Wait for app to idle
t =    17.00s         Find the "@go" Button
t =    17.00s             Snapshot accessibility hierarchy for XXX
t =    17.09s             Find: Descendants matching type Button
t =    17.09s             Find: Elements matching predicate '"@go" IN identifiers'
t =    17.10s             Wait for app to idle
t =    17.15s         Synthesize event
t =    17.41s         Wait for app to idle

以下是失败时的示例。系统等待应用程序结算,以便它可以在层次结构中查找按钮。因为,它没有解决,它等待“永远”终于进入超时。

t =    18.88s     Set device orientation to Unknown
t =    18.93s     Tap "@go" Button
t =    18.93s         Wait for app to idle
t =    79.00s             Assertion Failure: UI Testing Failure - App failed to quiesce within 60s

在我的情况下,导致“未能停顿”,因为在时间t = 18.90s,生成了演示数据,导致UIProgressView的重复更新。从那时起,应用UI从未解决(“静止”)。

(“quiesce”这个单词不在我的主动词汇中,这肯定会延迟我对正在发生的事情的认识。控制台输出推动我走向正确的方向。我敢打赌“闲置”响起的声音比许多开发人员都“停顿”。)