Xcode 7 UI 测试 XCUIElementQuery 随机未正确更新
Posted
技术标签:
【中文标题】Xcode 7 UI 测试 XCUIElementQuery 随机未正确更新【英文标题】:Xcode 7 UI Testing XCUIElementQuery Randomly Not Updating Properly 【发布时间】:2015-12-01 01:28:10 【问题描述】:我有一个解除警报的 UI 测试,检查警报是否已解除(如果没有,它会再次尝试解除),然后继续进行其余的测试。
大多数情况下,测试都顺利通过,但有时看似随机(尽管更常见的是在硬件较旧的机器上的模拟器中),测试将执行以下操作:
检查警报 点击关闭警报的按钮 警报被解除 检查警报(并且仍然找到它 - 我已经记录了此时的查询,它确实找到了刚刚解除的相同警报) 尝试点击关闭警报的按钮 抱怨找不到alert而失败几点说明:
到目前为止,我在使用调试器单步执行测试时还没有观察到这种行为。 在解除警报后强制测试稍等片刻(使用诸如 usleep() 之类的东西)仍然会导致此行为。为什么在解除警报后查询仍然可以找到警报?为什么这种行为看似随机?
【问题讨论】:
有趣...所以这个问题似乎源于警报与键盘同时显示的事实。我已修改测试以在显示警报之前关闭键盘,并且测试似乎不再失败。 【参考方案1】:您是否尝试过通过UI Interruption 处理程序与警报交互?
addUIInterruptionMonitorWithDescription("Alert") (alert) -> Bool in
alert.buttons["Allow"].tap()
return true
【讨论】:
这似乎只适用于系统警报 - 有问题的警报是由应用程序创建的。 我刚刚验证这适用于用户创建的UIAlertController
s。您是否确保在警报出现之前添加中断处理程序?
嗯。警报是UIAlertView
,而不是UIAlertController
。我想这可能是一个问题,因为它在技术上已被弃用。
我刚刚在运行 ios 9 的 iPhone 4s 模拟器上使用 UIAlertView
尝试了相同的代码,但它仍然有效。也许您可以将更多代码发布到 gist 和/或我们可以continue this conversation in chat?以上是关于Xcode 7 UI 测试 XCUIElementQuery 随机未正确更新的主要内容,如果未能解决你的问题,请参考以下文章
Xcode UI 测试无法编辑多个 UITextFields