Nous utilisions ce code pour simuler un robinet sur la première cellule d'un UICollectionView
sur les tests UI Xcode:collecte de test UI Xcode cellules vue est devenu non-hittable sur iOS 11
XCUIElementQuery *query = [application descendantsMatchingType:XCUIElementTypeAny];
XCUIElement *collectionView = [query objectForKeyedSubscript:collectionViewAccessibilityIdentifier];
XCUIElement *targetCell = [lensesCollectionView.cells elementBoundByIndex:cellIndex];
if (targetCell.hittable) {
[targetCell tap];
}
cela fonctionne très bien sur iOS 10 , mais a cessé de travailler sur iOS 11. Le targetCell
n'est jamais hittable
, peu importe quoi. L'ajout d'un sleep(10)
avant XCUIElement *targetCell = [lensesCollectionView.cells elementBoundByIndex:lensIndex]
n'aide pas.
J'ai vu des solutions aki mentionnées ailleurs, comme
func forceTapElement() {
if self.isHittable {
self.tap()
} else {
var coordinate: XCUICoordinate = self.coordinateWithNormalizedOffset(CGVectorMake(0.0, 0.0))
coordinate.tap()
}
}
mais qui ne semble pas très propre. Quel est le moyen le plus propre d'y parvenir?
Mise à jour: Si je tente de tapoter sans vérifier hittable
je reçois cette erreur:
error: Error -25204 performing AXAction 2003 on element pid: 43616, elementOrHash.elementID: 4882574576.240
J'ai eu ce problème avec des cellules qui n'étaient pas à l'écran - elles défilaient automatiquement sur l'écran avant de taper lorsqu'elles étaient exécutées sur iOS 10. Votre cellule est-elle affichée à l'écran lorsque vous essayez de la toucher? – Oletha
Il est définitivement à l'écran. Je peux le voir sur le téléphone, et le 'targetCell.frame' est à l'intérieur de l'écran. Pourtant, il reste inexplicable. –