Xcode 11 XCUITest Impossibile ottenere le istantanee corrispondenti: Errore durante l'acquisizione della finestra principale kAXErrorServerNotFound


21

Dopo aver compilato la mia app in Xcode 11 ed eseguito la mia suite di XCUITests sto ottenendo molti errori casuali con quanto segue.

Impossibile ottenere le istantanee corrispondenti: errore durante l'acquisizione della finestra principale kAXErrorServerNotFound

Indipendentemente da quanto tempo aumento i timeout, i problemi vengono visualizzati in modo intermittente. Sembra che si siano verificati problemi durante l'istantanea della gerarchia dell'interfaccia utente. I nostri test superano costantemente Xcode 10.

Ho reinstallato Xcode. Eliminati tutti i simulatori. Dati derivati ​​cancellati. Timeout modificati. Aggiornato da Xcode 11.1 a Xcode 11.2.1.

Grazie!

 


anche se sto affrontando lo stesso problema, hai avuto qualche soluzione per lo stesso.
Samarth Kejriwal,

Risposte:


9

Ho avuto il problema con la corrispondenza mentre stavo eseguendo il semplice UITest in Xcode 11.3. Per farlo funzionare ho dovuto incollare all'inizio: XCUIApplication().activate()o XCUIApplication().launch().


Funziona .. grazie
RJ168

Questa risposta sembra essere la strada da percorrere, ma ho problemi a capire cosa significa? Dove devo digitare XCUIApplication (). Activiate () e / o XCUIApplication (). Launch ()?
Charlie Seligman,

All'interno della tua funzione di test
dell'interfaccia utente

0

Ho riscontrato lo stesso problema con Xcode 11 e mi sono reso conto che il test runner non veniva ucciso quando si interrompevano i test (o se il test si bloccava per qualche motivo). Eseguire i test una seconda volta genererebbe un nuovo runner di test e a quel punto ho avuto due runner che cercavano di interagire con la stessa applicazione, portando a questo strano errore.

Per dimostrare che ho fatto quanto segue:

  1. Creato un test dell'interfaccia utente che digita un testo lungo in una vista di testo
  2. Ho eseguito il test e l'ho fermato manualmente quando c'erano alcune frasi nella vista di testo
  3. Ha aperto manualmente l'app nel simulatore (non eseguendo il test)
  4. È stato osservato che nella visualizzazione del testo venivano visualizzati caratteri casuali, anche se non erano in esecuzione test.

La soluzione consisteva nel chiudere e riaprire il simulatore per assicurarsi che tutti i processi venissero uccisi. Spero che questo risolva i tuoi problemi


Grazie per la comprensione! Ora che dici questo che si allinea con quello che ho osservato. Sfortunatamente, come ho detto nel mio post originale, ho già provato a eliminare tutti i simulatori. Questi test vengono eseguiti come parte delle nostre build sia localmente che sul nostro sistema di CI. Conosci comunque per automatizzare questo processo?
Luke Street

I Quello che abbiamo finito per fare sul nostro sistema di CI era uccidere esplicitamente il simulatore prima di eseguire una suite di test. Ad esempio killall "Simulator" 2> /dev/null; xcrun simctl erase all, è possibile eseguire o se si utilizza Fastlane ci sono opzioni nella scansione per ripristinare il simulatore.
erudel

0

Uso macchine diverse. I miei Mac più vecchi riscontrano questo errore molto più spesso. Suppongo che i Mac più vecchi non dispongano della memoria necessaria per eseguire correttamente alcuni XCUITest.


0

Di tanto in tanto ho riscontrato il problema in Xcode 11.1. Ho osservato che il problema si verifica durante l'attesa di elementi dell'interfaccia utente, in particolare durante la prova vengono visualizzate le visualizzazioni Web. Quando si è verificato il problema, stavo usando XCUIElement.waitForExistence(timeout:)o aspettavo NSPredicate(format: "exists == true"). Quando ho cambiato per usare le aspettative con NSPredicate(format: "hittable == true")il problema sembra essere andato ma non so perché. La differenza tra i 2 attributi è che hittablerileva solo elementi sullo schermo mentre existsrileva elementi fuori schermo come celle fuori schermo di una vista tabella.

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

0

Ho avuto un problema simile su Xcode 11.

Si è scoperto che prima era permesso avere lo stesso identificatore di accessibilità in molte pagine.

Ma ora usando il nuovo stile di presentazione modale, dovresti usare identificatori diversi all'interno delle tue pagine per evitare conflitti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.