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
Cela se produit également si j'essaie de toucher UIView.
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.
Dans Xcode 9.3, où cela semble toujours poser problème, je l’ai fait:
J'ai parfois rencontré ce problème. Supprimer le répertoire de l'application de DerivedData semble aider.
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:
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()