Errore di corrispondenza evento con data e ora: impossibile trovare l'elemento corrispondente


93

Sto cercando di generare un UItest in Xcode. Quando provo a scorrere UIview ottengo un errore:

Timestamped Event Matching Error: Failed to find matching element

finestra di errore

inserisci qui la descrizione dell'immagine

Ciò accade anche se provo a toccare UIView.


Puoi spiegare un po 'di più?
Dieter Meemken

provo a scorrere o toccare UIview che suppone di fare qualcosa (ha il riconoscimento dei gesti) ma quando eseguo il gesto si verifica questo errore. l'unico modo in cui sono riuscito a farlo funzionare è con le domande, ma è davvero complicato e sono sicuro che ci sia un altro modo
shay

Risposte:


47

Dovresti verificare che l'opzione 'Accessibilità' sia abilitata per l'oggetto UIView da cui stai scorrendo, ad esempio:

inserisci qui la descrizione dell'immagine


1
Attivando l'accessibilità per una visualizzazione Web, i miei test hanno avuto esito negativo durante la risoluzione del testo nella visualizzazione Web. Disattivando l'accessibilità per l'UIView che ospita WebView, i test hanno avuto esito positivo. Quindi attenzione.
askielboe

1
Come altro punto per farlo funzionare per me ho dovuto dargli un'etichetta
Sean Lintern

Ho trovato questo post utile per l'utilizzo fastlaneper acquisire schermate di un tableView. stackoverflow.com/a/39331154/4475605
Adrian

Dov'è questo? Come lo imposto?
Cory McAboy

@CoryMcAboy puoi impostarlo dal codice per la tua visualizzazione personalizzata:isAccessibilityElement = true
Gleb Tarasov

14

Di solito questo problema si verifica quando l'elemento genitore dell'elemento che si desidera registrare è impostato su isAccessibilityElement = true. In generale, devi avere l'elemento genitore impostato su false per accedere all'elemento figlio. Ad esempio: se hai una UILabel all'interno di una vista, l'accessibilità dovrebbe essere impostata su false per la vista e impostata su true per UILabel.


1
Questo era esattamente riproducibile. Come hai detto non funziona l'elemento genitore è impostato su isAccessibilityElement = true! Dopo averlo ripristinato su false, ha funzionato di nuovo.
pommes

3

In Xcode 9.3, dove questo è apparentemente ancora un problema, quello che ho fatto è stato:

  • Esci da Xcode
  • Ripristina le impostazioni del simulatore (Hardware -> Cancella tutti i contenuti e le impostazioni)
  • Esci dal simulatore
  • Elimina i dati derivati ​​per l'app corrente
  • Riavvia Xcode
  • Prova a registrare di nuovo: questa volta ha funzionato per me.

Ho fornito l'identificatore come "skipButton" per un pulsante e per identificare il pulsante, si usa sempre per fallire, sto identificando il pulsante come app.buttons ["skipButton '], apprezzo il tuo aiuto
Sujit Baranwal

Questi passaggi non hanno funzionato per me. In effetti, i widget che in precedenza non erano interessati dal problema sono stati interessati.
Geoff S

perché questo non ha contenuto?
corvo

2

Per registrare un nuovo test, non credo che ci sia ancora una soluzione. Tuttavia, se utilizzi un'estensione che forza il tocco con un test già esistente, funziona.

Esempio di utilizzo:

extension XCUIElement {

    func forceTapElement() {
        if self.hittable {
            self.tap()
        }
        else {
            let coordinate: XCUICoordinate = self.coordinateWithNormalizedOffset(CGVectorMake(0.0, 0.0))
            coordinate.tap()
        }  
    }
}

func testSomethingWithCells() {

   let app = XCUIApplication()
   let cells = app.tables.cells
   sleep(1)
   cells.elementBoundByIndex(0).forceTapElement()
}

Puoi controllare il post originale qui:

Test dell'interfaccia utente Xcode - Errore del test dell'interfaccia utente - Impossibile scorrere fino a visibile (per azione AX) quando si tocca il campo di ricerca pulsante "Annulla"


elementBoundByIndex "è stato rinominato in" element (boundBy :) ", ad esempio: cells.element (boundBy: 0) .tap ()
Sujananth

2

Di tanto in tanto mi sono imbattuto in questo problema. Elimina la directory dell'app da DerivedData sembra aiutare.


1

Una soluzione che ha funzionato per me è stata identificare l'oggetto in modo diverso.
In Xcode 8 sono stato in grado di utilizzare quanto segue:

XCUIApplication().tables.cells["Camera Roll"].buttons["Camera Roll"].tap()

Con Xcode 9 ho ricevuto l'errore menzionato in questa domanda. Ho finito per usare quanto segue, che ha funzionato (anche se più flakey rispetto all'opzione originale)

XCUIApplication().cells.element(boundBy: 1).tap()

@Developer nella tua funzione di test
Huy-Anh Hoang
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.