J'essaye de générer un UItest dans Xcode. Lorsque j'essaye de faire glisser UIview, j'obtiens une erreur:
Timestamped Event Matching Error: Failed to find matching element
Cela se produit également si j'essaie d'appuyer sur UIView.
J'essaye de générer un UItest dans Xcode. Lorsque j'essaye de faire glisser UIview, j'obtiens une erreur:
Timestamped Event Matching Error: Failed to find matching element
Cela se produit également si j'essaie d'appuyer sur UIView.
Réponses:
fastlane
prendre des captures d'écran d'une tableView. stackoverflow.com/a/39331154/4475605
isAccessibilityElement = true
Ce problème survient généralement lorsque l'élément parent de l'élément que vous souhaitez enregistrer est défini sur isAccessibilityElement = true. En général, vous devez définir l'élément parent 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 l'UILabel.
Dans Xcode 9.3, où cela pose apparemment toujours un problème, ce que j'ai fait était:
Pour enregistrer un nouveau test, je ne pense pas qu'il y ait encore de solution. Mais, si vous utilisez une extension forçant le robinet avec un test qui existe déjà, fonctionne.
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 l'erreur mentionnée dans cette question. J'ai fini par utiliser ce qui suit, qui a fonctionné (bien que plus floconneux que l'option d'origine)
XCUIApplication().cells.element(boundBy: 1).tap()