Xcode 11 XCUITest Nie udało się uzyskać pasujących migawek: Błąd podczas pobierania głównego okna kAXErrorServerNotFound


21

Po zbudowaniu aplikacji w Xcode 11 i uruchomieniu pakietu XCUITests otrzymuję wiele przypadkowych awarii z następującymi.

Nie udało się uzyskać pasujących migawek: Błąd podczas pobierania głównego okna kAXErrorServerNotFound

Bez względu na to, jak długo zwiększam limity czasu, problemy pojawiają się sporadycznie. Wygląda na to, że występują problemy z migawką w hierarchii interfejsu użytkownika. Nasze testy przechodzą konsekwentnie w Xcode 10.

Ponownie zainstalowałem Xcode. Usunięto wszystkie symulatory. Wyczyszczono dane pochodne. Zmodyfikowane limity czasu. Aktualizacja z Xcode 11.1 do Xcode 11.2.1.

Dzięki!

 


nawet ja mam ten sam problem, czy masz jakieś obejście tego samego.
Samarth Kejriwal

Odpowiedzi:


9

Miałem problem z dopasowaniem podczas uruchamiania prostego testu UITest w Xcode 11.3. Aby zadziałało, musiałem najpierw wkleić: XCUIApplication().activate()lub XCUIApplication().launch().


To działa .. dziękuję
RJ168

Ta odpowiedź wydaje się być dobrym rozwiązaniem, ale mam problemy ze zrozumieniem, co to znaczy? Gdzie powinienem wpisać XCUIApplication (). Activate () i / lub XCUIApplication (). Launch ()?
Charlie Seligman

Wewnątrz funkcji testowania interfejsu użytkownika
Денис Грищенко

0

Doświadczyłem tego samego problemu z Xcode 11 i zdałem sobie sprawę, że tester nie został zabity podczas zatrzymywania testów (lub jeśli test z jakiegoś powodu się zawiesił). Uruchomienie testów po raz drugi odrodziłoby nowego testera i w tym momencie miałem dwóch biegaczy próbujących wejść w interakcję z tą samą aplikacją, co doprowadziło do tego bardzo dziwnego błędu.

Aby udowodnić, że wykonałem następujące czynności:

  1. Utworzono test interfejsu użytkownika, który wpisuje długi tekst w widoku tekstu
  2. Uruchom test i ręcznie go zatrzymałem, gdy w widoku tekstowym było kilka zdań
  3. Ręcznie otwórz aplikację w symulatorze (nie uruchamiając testu)
  4. Zaobserwowano, że losowe znaki pojawiały się w widoku tekstowym, mimo że nie uruchomiono żadnych testów.

Obejściem tego problemu było zamknięcie i ponowne otwarcie symulatora, aby upewnić się, że wszystkie procesy zostały zabite. Mam nadzieję, że to rozwiąże twoje problemy


Dzięki za wgląd! Teraz, kiedy to mówisz, zgadza się to z tym, co zaobserwowałem. Niestety, jak powiedziałem w moim oryginalnym poście, próbowałem już usunąć wszystkie symulatory. Te testy są uruchamiane w ramach naszych kompilacji zarówno lokalnie, jak i w naszym systemie CI. Czy wiesz, jak zautomatyzować ten proces?
Luke Street,

I To, co zakończyliśmy w naszym systemie CI, polegało na zabiciu Symulatora przed uruchomieniem pakietu testowego. Możesz na przykład uruchomić killall "Simulator" 2> /dev/null; xcrun simctl erase alllub jeśli używasz Fastlane, w skanie są dostępne opcje resetowania symulatora.
erudel,

0

Używam różnych maszyn. Moje starsze komputery Mac znacznie częściej występują ten błąd. Domyślam się, że starsze komputery Mac nie mają pamięci wymaganej do poprawnego uruchomienia niektórych XCUITestów.


0

Od czasu do czasu rozwiązuję ten problem w Xcode 11.1. Zauważyłem, że problem występuje podczas oczekiwania na elementy interfejsu użytkownika, zwłaszcza gdy podczas testu pokazywany jest widok strony internetowej. Kiedy pojawił się problem, używałem XCUIElement.waitForExistence(timeout:)lub oczekiwałem NSPredicate(format: "exists == true"). Kiedy zmieniłem na oczekiwanie, NSPredicate(format: "hittable == true")problem zniknął, ale nie wiem dlaczego. Różnica między 2 atrybutami polega na tym, że hittablewykrywają tylko elementy ekranowe, podczas gdy existswykrywają elementy poza ekranem, takie jak komórki poza ekranem widoku tabeli.

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

0

Miałem podobny problem na Xcode 11.

Okazało się, że zanim zezwolono na ten sam identyfikator dostępności na wielu stronach.

Ale teraz korzystając z nowego modalnego stylu prezentacji, powinieneś używać różnych identyfikatorów na swoich stronach, aby uniknąć konfliktów.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.