2017-01-31 2 views
0

Я хочу проверить, есть ли tableViewCell.detailTextLabel с заданной строкой в ​​моем UITest. Проблема в том, что когда я ищу app.tables.cells.children(matching: .staticText), он будет искать только метки, которые являются tableViewCell.textLabel. Любые идеи о том, как запросить detailTextLabel?Как получить доступ к `detailTextLabel` в` tableViewCell` в UITests?

+0

Пожалуйста, добавьте выход для приложения Texts.debugDescription – Oletha

+0

Выводит весь текст, который находится в 'textLabel' вместе с меткой, которая находится в заголовке таблицыView и заголовке navigationBar. –

ответ

3

Вы можете попробовать более общий запрос, чтобы определить, существует ли вообще текст. Если вы пытаетесь утверждать, что ячейка содержит «123 Main St.», к примеру, вы можете использовать следующее:

let app = XCUIApplication() 
XCTAssert(app.staticTexts["123 Main St."]).exists) 

Конечно, если этот текст появится в textLabel тест будет еще пройти.

+0

Возможно, я что-то делаю неправильно. Он отлично работает для textLabels, но не для деталей. –

+1

It *. * Работа! Проблема в том, что я инициализировал detailTextLabels пустой строкой и затем заполнял информацией. К тому времени, когда UITest запрашивал текст, он еще не был установлен. Теперь все в порядке! –

1

Похоже, что ваша текстовая метка не доступна.

Чтобы просмотреть все, что доступно вашим тестам в иерархии представлений, распечатайте описание отладки следующего запроса, что может помочь вам понять, появляется ли элемент, каков его тип и каков его идентификатор или метка :

let app = XCUIApplication() 
print(app.descendants(matching: .any).debugDescription) 

Убедитесь, что содержащий вид (ячейка?) не доступен, и что деталь текста этикетки является доступным, и дать ему идентификатор:

let cell = UITableViewCell! 
cell.isAccessibilityElement = false 
cell.detailTextLabel.isAccessibilityElement = true 
cell.detailTextLabel.accessibilityIdentifier = "myDetailTextLabel"