由于xCode已更新,因此无法运行任何ui测试用例。当它预期做一个简单的敲击操作时,它给我这个错误,例如:
XCUIApplication *app = [[XCUIApplication alloc] init];
XCUIElement *passwordSecureTextField = app.secureTextFields[@"Password"];
[passwordSecureTextField tap];
任何人都有任何想法为什么我会收到此错误?我在谷歌和这里搜索过但没有找到任何解决方案。
谢谢。
答案 0 :(得分:2)
确保在UI自动化测试期间屏幕上没有任何动画。我们在登录屏幕上有一个文本警报闪烁,用于我们的应用程序的调试/测试版本,它会导致“失败后停止”错误,直到它被删除。
还有一些关于此错误的帖子提到UIRefreshControl的问题,所以我怀疑动画或UIActivityIndicatorView会导致同样的问题。
答案 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”这个单词不在我的主动词汇中,这肯定会延迟我对正在发生的事情的认识。控制台输出推动我走向正确的方向。我敢打赌“闲置”响起的声音比许多开发人员都“停顿”。)