2017-10-17 6 views
0

Serait-il possible d'utiliser NSPredicate pour filtrer plusieurs résultats et sélectionner celui qui est visible?Utilisez NSPredicate pour filtrer plusieurs résultats et sélectionner celui qui est visible dans XCUITest?

Cette ligne de code renvoie plusieurs résultats:

app.otherElements.containing(.staticText, identifier:"THIS TEXT")

Je voudrais filtrer et sélectionner celui qui est visible. La raison pour laquelle je fais cela est de sauter les cellules. Ceci est le code qui est généré après avoir utilisé l'enregistreur:

let collectionViewsQuery = app.collectionViews 
collectionViewsQuery.cells.collectionViews.cells.collectionViews.children(matching: .cell).element(boundBy: 10).otherElements.containing(.staticText, identifier:"THIS TEXT").children(matching: .image).element.tap() 

J'essaie actuellement simplement en sautant la spécification d'index, mais l'identifiant StaticText renvoie plusieurs résultats. Comment puis-je le filtrer?

Répondre

1

Vous pouvez filtrer par NSPredicate si vous le souhaitez, ou simplement choisir le premier dans la liste si vous êtes satisfait que le premier sera toujours visible.

let app = XCUIApplication() 
let visiblePredicate = NSPredicate(format: "isHittable == true") 
let myVisibleElement = app 
    .otherElements 
    .containing(.staticText, identifier: "THIS TEXT") 
    .matching(visiblePredicate) 
    .element(boundBy: 0) 
+0

Je reçois le 'NSUknownKeyException' –

+0

Sur quelle ligne? Quelle version de Swift utilisez-vous? – Oletha

+0

Je suis actuellement en utilisant Swift 3. J'essaye simplement de cette requête https://stackoverflow.com/questions/46776365/refer-to-the-element-by-static-text-without-going-through-the -cells qui est lié à ma question. –