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!
Odpowiedzi:
Miałem problem z dopasowaniem podczas uruchamiania prostego testu UITest w Xcode 11.3. Aby zadziałało, musiałem najpierw wkleić:
XCUIApplication().activate()
lubXCUIApplication().launch()
.źródło
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:
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
źródło
killall "Simulator" 2> /dev/null; xcrun simctl erase all
lub jeśli używasz Fastlane, w skanie są dostępne opcje resetowania symulatora.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.
źródło
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łemNSPredicate(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, żehittable
wykrywają tylko elementy ekranowe, podczas gdyexists
wykrywają elementy poza ekranem, takie jak komórki poza ekranem widoku tabeli.źródło
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.
źródło