Xcode 11 XCUITest n'a pas réussi à obtenir les instantanés correspondants: Erreur lors de l'obtention de la fenêtre principale kAXErrorServerNotFound

21

Après avoir construit mon application dans Xcode 11 et exécuté ma suite de XCUITests, je reçois de nombreux échecs aléatoires avec les éléments suivants.

Échec d'obtention des instantanés correspondants: erreur lors de l'obtention de la fenêtre principale kAXErrorServerNotFound

Peu importe combien de temps j'augmente les délais, les problèmes apparaissent par intermittence. Il semble y avoir des problèmes de capture instantanée de la hiérarchie de l'interface utilisateur. Nos tests passent régulièrement dans Xcode 10.

J'ai réinstallé Xcode. Supprimé tous les simulateurs. Données dérivées effacées. Délais d'attente modifiés. Mise à niveau de Xcode 11.1 vers Xcode 11.2.1.

Merci!

 

Luke Street
la source
même si je suis confronté au même problème, avez-vous obtenu une solution de contournement pour le même.
Samarth Kejriwal

Réponses:

9

J'ai eu le problème avec la correspondance pendant que j'utilisais le simple UITest dans Xcode 11.3. Pour que ça marche, je devais d'abord coller: XCUIApplication().activate()ou XCUIApplication().launch().

Денис Грищенко
la source
Cela fonctionne .. merci
RJ168
Cette réponse semble être la voie à suivre, mais j'ai des problèmes pour comprendre ce que cela signifie? Où dois-je taper XCUIApplication (). Activiate () et / ou XCUIApplication (). Launch ()?
Charlie Seligman
À l'intérieur de votre fonction de test de l'
interface utilisateur
0

J'ai rencontré le même problème avec Xcode 11 et j'ai réalisé que le lanceur de test ne se faisait pas tuer lors de l'arrêt des tests (ou si le test s'est écrasé pour une raison quelconque). Exécuter les tests une deuxième fois engendrerait un nouveau lanceur de test et à ce moment-là, j'avais deux coureurs essayant d'interagir avec la même application, conduisant à cette erreur très étrange.

Pour prouver que j'ai fait ce qui suit:

  1. Création d'un test d'interface utilisateur qui saisit un texte long dans une vue texte
  2. A exécuté le test et l'a arrêté manuellement lorsqu'il y avait quelques phrases dans la vue texte
  3. Ouverture manuelle de l'application dans le simulateur (pas en exécutant le test)
  4. A observé que des caractères aléatoires apparaissaient dans la vue texte, même si aucun test n'était en cours.

La solution de contournement consistait à quitter et à rouvrir le simulateur pour vous assurer que tous les processus étaient interrompus. J'espère que cela résout vos problèmes

erudel
la source
Merci pour la perspicacité! Maintenant que vous dites cela, cela correspond à ce que j'ai observé. Malheureusement, comme je l'ai dit dans mon message d'origine, j'ai déjà essayé de supprimer tous les simulateurs. Ces tests sont exécutés dans le cadre de nos versions à la fois localement et sur notre système CI. Connaissez-vous de toute façon d'automatiser ce processus?
Luke Street
I Ce que nous avons fini par faire sur notre système CI était de tuer explicitement le simulateur avant d'exécuter une suite de tests. Vous pouvez par exemple exécuter killall "Simulator" 2> /dev/null; xcrun simctl erase all, ou si vous utilisez Fastlane, il existe des options de scan pour réinitialiser le simulateur.
erudel
0

J'utilise différentes machines. Mes anciens Mac rencontrent cette erreur beaucoup plus souvent. Je suppose que les anciens mac n'ont pas la mémoire requise pour exécuter correctement certains XCUITests.

Charlie Seligman
la source
0

Je rencontre de temps en temps le problème dans Xcode 11.1. J'ai observé que le problème se produit lors de l'attente d'éléments d'interface utilisateur, en particulier lorsque la vue Web est affichée pendant le test. Lorsque le problème s'est produit, j'utilisais XCUIElement.waitForExistence(timeout:)ou j'attendais avec NSPredicate(format: "exists == true"). Quand j'ai changé pour utiliser l'attente, NSPredicate(format: "hittable == true")le problème semble avoir disparu, mais je ne sais pas pourquoi. La différence entre les 2 attributs est que hittableseuls les éléments à l'écran sont existsdétectés tandis que les éléments hors écran tels que les cellules hors écran d'une vue de tableau sont détectés.

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

J'ai eu un problème similaire sur Xcode 11.

Il s'est avéré qu'avant il était permis d'avoir le même identifiant d'accessibilité sur plusieurs pages.

Mais maintenant, en utilisant le nouveau style de présentation modale, vous devez utiliser différents identifiants dans vos pages pour éviter les conflits.

touti
la source