Xcode 11 XCUITest Es konnten keine übereinstimmenden Snapshots abgerufen werden: Fehler beim Abrufen des Hauptfensters kAXErrorServerNotFound


21

Nachdem ich meine App in Xcode 11 erstellt und meine Suite von XCUITests ausgeführt habe, erhalte ich viele zufällige Fehler mit den folgenden.

Fehler beim Abrufen übereinstimmender Snapshots: Fehler beim Abrufen des Hauptfensters kAXErrorServerNotFound

Egal wie lange ich die Zeitüberschreitungen erhöhe, die Probleme treten zeitweise auf. Es scheint Probleme mit dem Snapshotting der UI-Hierarchie zu geben. Unsere Tests bestehen konsequent in Xcode 10.

Ich habe Xcode neu installiert. Alle Simulatoren gelöscht. Abgeleitete Daten gelöscht. Geänderte Zeitüberschreitungen. Upgrade von Xcode 11.1 auf Xcode 11.2.1.

Vielen Dank!

 


Selbst wenn ich vor dem gleichen Problem stehe, haben Sie dafür eine Problemumgehung erhalten?
Samarth Kejriwal

Antworten:


9

Ich hatte das Problem mit dem Abgleich, während ich den einfachen UITest in Xcode 11.3 ausführte. Damit es funktioniert, musste ich zuerst einfügen: XCUIApplication().activate()oder XCUIApplication().launch().


Dies funktioniert .. danke
RJ168

Diese Antwort scheint der richtige Weg zu sein, aber habe ich Probleme zu verstehen, was es bedeutet? Wo soll ich XCUIApplication (). Activiate () und / oder XCUIApplication (). Launch () eingeben?
Charlie Seligman

In Ihrer UI-Testfunktion
2енис Грищенко

0

Ich habe das gleiche Problem mit Xcode 11 festgestellt und festgestellt, dass der Testläufer beim Stoppen der Tests nicht getötet wurde (oder wenn der Test aus irgendeinem Grund abstürzte). Das zweite Ausführen der Tests würde einen neuen Testläufer hervorbringen, und zu diesem Zeitpunkt hatten zwei Läufer versucht, mit derselben Anwendung zu interagieren, was zu diesem sehr seltsamen Fehler führte.

Um zu beweisen, dass ich Folgendes getan habe:

  1. Erstellt einen UI-Test, der einen langen Text in eine Textansicht eingibt
  2. Führen Sie den Test aus und stoppen Sie ihn manuell, wenn die Textansicht einige Sätze enthält
  3. Manuelles Öffnen der App im Simulator (nicht durch Ausführen des Tests)
  4. Es wurde festgestellt, dass zufällige Zeichen in der Textansicht angezeigt wurden, obwohl keine Tests ausgeführt wurden.

Die Problemumgehung bestand darin, den Simulator zu beenden und erneut zu öffnen, um sicherzustellen, dass alle Prozesse abgebrochen wurden. Hoffe, dies löst Ihre Probleme


Danke für den Einblick! Nun, da Sie dies sagen, stimmt das mit dem überein, was ich beobachtet habe. Leider habe ich, wie ich in meinem ursprünglichen Beitrag sagte, bereits versucht, alle Simulatoren zu löschen. Diese Tests werden als Teil unserer Builds sowohl lokal als auch auf unserem CI-System ausgeführt. Wissen Sie überhaupt, wie Sie diesen Prozess automatisieren können?
Luke Street

I Am Ende haben wir den Simulator explizit beendet, bevor wir eine Testsuite ausgeführt haben. Sie können beispielsweise ausführen killall "Simulator" 2> /dev/null; xcrun simctl erase all, oder wenn Sie Fastlane verwenden, gibt es beim Scannen Optionen zum Zurücksetzen des Simulators.
Geleudel

0

Ich benutze verschiedene Maschinen. Bei meinen älteren Macs tritt dieser Fehler weitaus häufiger auf. Ich vermute, dass ältere Macs nicht über den erforderlichen Speicher verfügen, um bestimmte XCUITests korrekt auszuführen.


0

Ich treffe das Problem von Zeit zu Zeit in Xcode 11.1. Ich habe festgestellt, dass das Problem beim Warten auf UI-Elemente auftritt, insbesondere wenn während des Tests eine Webansicht angezeigt wird. Als das Problem auftrat, benutzte ich XCUIElement.waitForExistence(timeout:)oder erwartete mit NSPredicate(format: "exists == true"). Als ich mich geändert habe, um die Erwartung mit NSPredicate(format: "hittable == true")dem Problem zu verwenden, scheint es weg zu sein, aber ich weiß nicht warum. Der Unterschied zwischen den beiden Attributen besteht darin, dass hittablenur Bildschirmelemente erkannt werden, während Elemente existsaußerhalb des Bildschirms wie z. B. Zellen außerhalb des Bildschirms einer Tabellenansicht erkannt werden.

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

0

Ich hatte ein ähnliches Problem mit Xcode 11.

Es stellte sich heraus, dass es auf vielen Seiten möglich war, dieselbe Barrierefreiheits-ID zu haben.

Wenn Sie jetzt den neuen modalen Präsentationsstil verwenden, sollten Sie auf Ihren Seiten unterschiedliche Bezeichner verwenden, um Konflikte zu vermeiden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.