Sto lavorando con UITableViews e vorrei trovare la cella che corrisponde a un controllo o un testo statico all'interno della cella.Trova genitore o fratello con XI UI test
Più in generale, un buon modo per trovare qualsiasi genitore o fratello di un dato elemento sarebbe bello sapere.
In questo momento sto solo scorrendo tra le celle finché non trovo quello corretto, che vorrei evitare. Ho provato a utilizzare app.tables.cells.containingPredicate
, ma non ho avuto fortuna.
let pred = NSPredicate { (element, bindings: [String : AnyObject]?) -> Bool in
return element.staticTexts["My Text"].exists
}
let cells = app.tables.cells.containingPredicate(pred)
L'elemento passato al blocco predicato è un XCElementSnapshot che non ha staticTexts.
EDIT
James è corretta, il containingType: identificatore: metodo funziona alla grande.
a Swift, sembra che questo
let cell = app.tables.cells.containingType(.StaticText, identifier: "My Text")
Dove l'identificatore nella firma del metodo non corrisponde alla proprietà di identificazione dell'elemento, piuttosto è semplicemente il modo normale si dovrebbe accedere a un elemento da un testo tra parentesi .
app.cells.staticTexts["My Text"]
Sono ancora confuso come di perche' app.cells.staticTexts [ "Il mio testo"] 'no Lavoro per te. Se la stringa "My Text" appartiene a qualsiasi cella, l'istantanea della gerarchia di accessibilità della tua app troverà la stringa e la corrisponderà. Il metodo 'containingType: identifier:' crea un 'XCUIElementQuery', e questo non significa che' XCUIElement' da questa query esista effettivamente nella tua app. – Citronex
app.cells.staticTexts [] mi restituirebbe un testo statico, ad esempio UILabel, mentre mi serviva UITableViewCell, non l'etichetta – Alex
che vedo. Correggetemi se ho torto, ma facendo 'let cella = app.tables.cells.containingType (.StaticText, identificatore:" My Text ")' sta creando un XCUIElementQuery, non un XCUIElement, quindi non stai effettivamente creando un'istanza elemento nella tua app, semplicemente creando una query a un elemento che potrebbe non esistere nemmeno. Se sulla console si esegue 'po app.tables.cells.containingType (.StaticText, identificatore:" blah blah ")' restituirà sempre un oggetto anche se non esiste, e non è possibile eseguire alcuna affermazione su un XCUIElementQuery, o anche i metodi .exist o .hittable per vedere se il tuo elemento è reale. – Citronex