Xcode 11 XCUITest无法获取匹配的快照:获取主窗口kAXErrorServerNotFound时出错


21

在Xcode 11中构建我的应用并运行我的XCUITests套件后,由于以下原因,我遇到了许多随机失败。

无法获取匹配的快照:获取主窗口kAXErrorServerNotFound时出错

无论我增加超时多长时间,问题都会间歇性地弹出。Snapshotting UI层次结构似乎有问题。我们的测试始终在Xcode 10中通过。

我已经重新安装了Xcode。删除了所有模拟器。清除派生数据。修改的超时。从Xcode 11.1升级到Xcode 11.2.1。

谢谢!

 


即使我面临着同样的问题,您是否也能获得相同的解决方法?
Samarth Kejriwal

Answers:


9

我在Xcode 11.3中运行简单的UITest时遇到匹配问题。要使其正常工作,我必须首先粘贴:XCUIApplication().activate()XCUIApplication().launch()


这有效..谢谢
RJ168

这个答案似乎是解决之道,但在理解其含义时遇到了问题?我应该在哪里键入XCUIApplication()。activiate()和/或XCUIApplication()。launch()?
Charlie Seligman

里面你的UI测试功能
ДенисГрищенко

0

我在Xcode 11中也遇到了同样的问题,并且意识到停止测试时(或者由于某种原因导致测试崩溃)测试运行程序并没有被杀死。第二次运行测试会产生一个新的测试运行程序,那时我有两个运行程序试图与同一个应用程序进行交互,从而导致了这个非常奇怪的错误。

为了证明我做到了以下几点:

  1. 创建了一个在文本视图中键入长文本的UI测试
  2. 运行测试,然后在文本视图中有几句话时手动将其停止
  3. 在模拟器中手动打开应用(不通过运行测试)
  4. 观察到即使没有运行测试,随机字符也会出现在文本视图中。

解决方法是退出并重新打开模拟器,以确保所有进程都被杀死。希望这能解决您的问题


感谢您的见解!现在您说的与我所观察到的一致。不幸的是,就像我在原始帖子中所说的那样,我已经尝试删除所有模拟器。这些测试是我们本地构建和CI系统上构建的一部分。您是否知道可以自动执行此过程?
路加街

我最终在CI系统上所做的就是在运行测试套件之前明确杀死了Simulator。例如killall "Simulator" 2> /dev/null; xcrun simctl erase all,您可以运行,或者,如果您使用快速通道,则扫描中会有一些选项可以重置模拟器。
erudel

0

我使用不同的机器。我的较旧的Mac经常遇到此错误。我的猜测是较旧的Mac没有正确运行某些XCUITests所需的内存。


0

我有时会在Xcode 11.1中遇到此问题。我观察到该问题在等待UI元素时发生,尤其是在测试过程中显示了Web视图。问题发生时,我正在使用XCUIElement.waitForExistence(timeout:)或期望使用NSPredicate(format: "exists == true")。当我改用期望值时NSPredicate(format: "hittable == true"),问题似乎消失了,但我不知道为什么。这两个属性之间的区别在于,hittable仅检测屏幕上的元素,而exists检测屏幕外的元素,例如表格视图的屏幕外单元。

expectation(for: NSPredicate(format: "hittable == true"), evaluateWith: element, handler: nil)
waitForExpectations(timeout: 60, handler: nil)

0

我在Xcode 11上遇到了类似的问题。

事实证明,在允许它在多个页面中具有相同的可访问性标识符之前。

但是,现在使用新的模式表示样式,您应该在页面内使用不同的标识符以避免冲突。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.