web-dev-qa-db-fra.com

Erreur de correspondance d'événement horodaté: échec de la recherche de l'élément correspondant

J'essaie de générer un UItest dans Xcode. Lorsque j'essaie de glisser UIview, j'obtiens une erreur:

Timestamped Event Matching Error: Failed to find matching element

fenêtre d'erreur

enter image description here

Cela se produit également si j'essaie de toucher UIView.

78
shay

Vous devez vérifier que l'option 'Accessibilité' est activée pour l'objet UIView que vous balayez, par exemple:

enter image description here

46
AmitW

En général, ce problème est observé lorsque l'élément parent de l'élément que vous souhaitez enregistrer est défini sur isAccessibilityElement = true. En général, l'élément parent doit être défini sur false pour accéder à l'élément enfant. Par exemple: si vous avez un UILabel dans une vue, l'accessibilité doit être définie sur false pour la vue et sur true pour le UILabel.

4
Souma Paul

Dans Xcode 9.3, où cela semble toujours poser problème, je l’ai fait:

  • Quitter Xcode
  • Réinitialiser les paramètres du simulateur (Matériel -> Effacer tout le contenu et les paramètres)
  • Quitter le simulateur
  • Supprimer les données dérivées pour l'application actuelle
  • Redémarrer Xcode
  • Essayez d’enregistrer à nouveau - cela a fonctionné cette fois pour moi.
3
commanda

J'ai parfois rencontré ce problème. Supprimer le répertoire de l'application de DerivedData semble aider.

2
Dave L

Pour enregistrer un nouveau test, je ne pense pas qu'il y ait encore de solution. Toutefois, si vous utilisez une extension forcée, appuyez sur un test qui existe déjà.

Exemple d'utilisation:

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()
}

Vous pouvez vérifier le message original ici:

Test d'interface utilisateur Xcode - Échec de test d'interface utilisateur - Échec de l'affichage visible (par action AX) lorsque vous tapez sur le bouton "Annuler" du champ de recherche

2
Sophy Swicz

Une solution qui a fonctionné pour moi était d'identifier l'objet différemment.
Dans Xcode 8, j'ai pu utiliser les éléments suivants:

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

Avec Xcode 9, j'ai eu l'erreur mentionnée dans cette question. En fin de compte en utilisant ce qui suit, qui a fonctionné (al beit it plus floconneux que l’option originale)

XCUIApplication().cells.element(boundBy: 1).tap()
0
Charlie Seligman