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!
Antworten:
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()
oderXCUIApplication().launch()
.quelle
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:
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
quelle
killall "Simulator" 2> /dev/null; xcrun simctl erase all
, oder wenn Sie Fastlane verwenden, gibt es beim Scannen Optionen zum Zurücksetzen des Simulators.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.
quelle
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 mitNSPredicate(format: "exists == true")
. Als ich mich geändert habe, um die Erwartung mitNSPredicate(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, dasshittable
nur Bildschirmelemente erkannt werden, während Elementeexists
außerhalb des Bildschirms wie z. B. Zellen außerhalb des Bildschirms einer Tabellenansicht erkannt werden.quelle
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.
quelle