Один из способов сделать это - получить последнюю ячейку из tableView. Затем запустите цикл while, который прокручивает и проверяет, находится ли ячейка isHittable
между каждой прокруткой. Как только определено, что isHittable == true
, элемент может быть утвержден против.
https://developer.apple.com/documentation/xctest/xcuielement/1500561-ishittable
Это будет выглядеть примерно так (быстрый ответ):
- В вашем файле
XCTestCase
напишите запрос для идентификации таблицы. Затем последующий запрос для определения последней ячейки.
let tableView = app.descendants(matching: .table).firstMatch
guard let lastCell = tableView.cells.allElementsBoundByIndex.last else { return }
- Используйте цикл while, чтобы определить, находится ли ячейка
isHittable
/ на экране. Примечание: isHittable
полагается на свойство userInteractionEnabled
ячейки, установленное в true
//Add in a count, so that the loop can escape if it's scrolled too many times
let MAX_SCROLLS = 10
var count = 0
while lastCell.isHittable == false && count < MAX_SCROLLS {
apps.swipeUp()
count += 1
}
- Проверьте текст ячейки, используя свойство
label
, и сравните его с ожидаемым текстом.
//If there is only one label within the cell
let textInLastCell = lastCell.descendants(matching: .staticText).firstMatch
XCTAssertTrue(textInLastCell.label == "Expected Text" && textInLastCell.isHittable)