在Xcode 11中构建我的应用并运行我的XCUITests套件后,由于以下原因,我遇到了许多随机失败。
无法获取匹配的快照:获取主窗口kAXErrorServerNotFound时出错
无论我将超时时间增加多长时间,问题都会间歇性地弹出。 snapshotting UI层次结构似乎有问题。我们的测试始终在Xcode 10中通过。
我已经重新安装了Xcode。删除了所有模拟器。清除派生数据。修改的超时。从Xcode 11.1升级到Xcode 11.2.1。
谢谢!
我在Xcode 11.3中运行简单的UITest时遇到匹配问题。要使其正常工作,我必须首先粘贴:XCUIApplication().activate()
或XCUIApplication().launch()
。
我不时在Xcode 11.1中遇到这个问题。我观察到该问题在等待UI元素时发生,特别是在测试过程中显示了Web视图。问题发生时,我使用XCUIElement.waitForExistence(timeout:)
或期望使用NSPredicate(format: "exists == true")
。当我更改为对NSPredicate(format: "hittable == true")
使用期望值时,问题似乎已经消失,但我不知道为什么。这2个属性之间的区别在于hittable
仅检测屏幕上的元素,而exists
检测屏幕外的元素,例如表视图的屏幕外单元。
expectation(for: NSPredicate(format: "hittable == true"),evaluateWith: element,handler: nil)
waitForExpectations(timeout: 60,handler: nil)
,
我在Xcode 11中也遇到了同样的问题,并且意识到停止测试时(或者由于某种原因导致测试崩溃)测试运行程序并没有被杀死。再次运行测试将产生一个新的测试运行程序,那时我有两个运行程序试图与同一个应用程序进行交互,从而导致这个非常奇怪的错误。
为了证明我做了以下事情:
解决方法是退出并重新打开模拟器,以确保所有进程都被杀死。 希望这能解决您的问题
,我在XCode 11上遇到了类似的问题。 事实证明,在允许它在多个页面中具有相同的可访问性标识符之前。 但是现在使用新的模式化Presentation样式。您应该在页面内使用不同的标识符,以避免冲突。
,我使用不同的机器。我的较旧的Mac经常遇到此错误。我的猜测是较旧的Mac没有正确运行某些XCUITests所需的内存。
,如果您使用的是 fastlane,可以使用以下车道轻松解决:
# Unit tests
lane :tests do
clear_derived_data
scan(
workspace: "AppTest.xcworkspace",devices: ["iPhone 8"],# it can be with the iPhone that has your VM
force_quit_simulator: true,reset_simulator: true,reinstall_app: true,scheme: "AppTest"
)
end
理论上,您必须重置模拟器并重新安装应用。
快乐编码