Я работаю с UITableViews, и я хотел бы найти ячейку, которая соответствует элементу управления или статическому тексту внутри ячейки.Найти родителя или родного брата с тестированием интерфейса Xcode
В более общем плане, хороший способ найти любого родителя или родного брата данного элемента будет замечательным.
Прямо сейчас я просто перебираю клетки, пока не нахожу правильный, чего я бы хотел избежать. Я пробовал использовать 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)
Элемент передается к блоку предикат является XCElementSnapshot, который не имеет staticTexts.
EDIT
Джеймс является правильным, containingType: идентификатор: метод отлично работает.
В быстры, это выглядит, как этот
let cell = app.tables.cells.containingType(.StaticText, identifier: "My Text")
Если идентификатор в подписи метода не соответствует свойству идентификатора элемента, а это просто очередной способ вы бы получить доступ к элементу с текстом в скобках ,
app.cells.staticTexts["My Text"]
Я до сих пор путают о том, почему 'app.cells.staticTexts [«Мой текст»]' не работа для вас. Если строка «Мой текст» принадлежит какой-либо ячейке, снимок иерархии доступности вашего приложения найдет строку и сопоставит ее. Метод 'containsType: identifier:' создает 'XCUIElementQuery', и это не означает, что' XCUIElement' из этого запроса действительно существует в вашем приложении. – Citronex
app.cells.staticTexts [] вернет мне статический текст, т. Е. UILabel, тогда как мне нужен UITableViewCell, а не метка – Alex
. Исправьте меня, если я ошибаюсь, но делаю 'let cell = app.tables.cells.containingType (.StaticText, identifier:« My Text »)' создает XCUIElementQuery, а не XCUIElement, поэтому вы на самом деле не создаете экземпляр в вашем приложении, просто создавая запрос к элементу, который может даже не существовать. Если на консоли вы делаете «po app.tables.cells.containingType (.StaticText, identifier:« blah blah »)', он всегда будет возвращать объект, даже если он не существует, и вы не можете запускать какие-либо утверждения на XCUIElementQuery или даже методы .exist или .hittable, чтобы убедиться, что ваш элемент является реальным. – Citronex