我與UITableViews工作,我想找到對應於細胞內的控制或靜態文本的單元格。找父母或兄弟姐妹和Xcode UI測試
更一般地,一個好辦法找到一個給定元素的父母或兄弟姐妹將是巨大的瞭解。
現在我只是通過細胞循環,直到我找到正確的一個,我想避免的。我試過使用app.tables.cells.containingPredicate
,但沒有任何運氣。
let pred = NSPredicate { (element, bindings: [String : AnyObject]?) -> Bool in
return element.staticTexts["My Text"].exists
}
let cells = app.tables.cells.containingPredicate(pred)
傳遞給謂詞塊的元素是一個沒有staticTexts的XCElementSnapshot。
編輯
詹姆斯是正確的,containingType:標識符:方法的偉大工程。
在迅速的,它看起來像這樣
let cell = app.tables.cells.containingType(.StaticText, identifier: "My Text")
凡在方法簽名標識不符合元素的標識屬性,而這僅僅是你會通過短信括號訪問一個元素的常規方式。
app.cells.staticTexts["My Text"]
我仍然爲什麼'app.cells.staticTexts [「My Text」]'沒有爲你工作。如果字符串「我的文本」屬於任何單元格,則應用程序的可訪問性層次結構的快照將查找該字符串並與之匹配。 'containsType:identifier:'方法創建一個'XCUIElementQuery',這並不意味着這個查詢中的'XCUIElement'確實存在於你的應用中。 – Citronex
app.cells.staticTexts []會還給我一個靜態文本,即的UILabel,而我需要的UITableViewCell,不是標籤 – Alex
我看。糾正我,如果我錯了,但做'let cell = app.tables.cells.containingType(.StaticText,標識符:「我的文本」)'是創建一個XCUIElementQuery,而不是一個XCUIElement,所以你實際上並沒有實例化一個元素在您的應用程序中,只是創建一個查詢可能不存在的元素。如果在控制檯上執行'po app.tables.cells.containingType(.StaticText,identifier:「blah blah」),它將總是返回一個對象,即使它不存在,也不能在一個對象上運行任何斷言XCUIElementQuery,甚至是.exist或.hittable方法來查看你的元素是否真實。 – Citronex