UITesting в iOS: метод tap() не работает должным образом
Я сталкиваюсь со странной проблемой с UITesting в Swift под iOS 10.3.2 и Xcode 8.3.3 .
Я выполняю простой тест внутри моего приложения, который должен коснуться и проверить каждую строку внутри TableView (это представление "Настройки" моего приложения, поэтому каждая отдельная строка загружается с диска и на этом этапе ничего не загружается из Интернета), но по странной причине, когда я нажимаю на строку, которую раньше не было видно, метод.tap() не работает.
Пример кода:
let app = XCUIApplication()
let myTableView = app.tables.element(matching: .table, identifier: "tableView01")
myTableView.swipeUp(). //I swipe so that the cell becomes visible...
let myCell = myTableView.cells.element(matching: .cell, identifier: "tappableCell")
myCell.tap()
Странно то, что у меня правильный вывод с консоли в Xcode.
t = 328.24s Tap "tappableCell" Cell
t = 328.24s Wait for app to idle
t = 328.80s Find the "tappableCell" Cell
t = 328.80s Snapshot accessibility hierarchy for com.thefloow.enterprise.ownbrand
t = 328.92s Find: Descendants matching type Table
t = 328.92s Find: Element at index 0
t = 328.92s Find: Descendants matching type Cell
t = 328.92s Find: Elements matching predicate '"tappableCell" IN identifiers'
t = 329.04s Wait for app to idle
t = 329.22s Synthesize event
t = 329.37s Wait for app to idle
Еще одна странная вещь: если я ставлю точку останова перед методом tap, а затем запускаю ее из командной строки, она отлично работает, давая мне тот же вывод из консоли.
Что может быть причиной этого странного поведения?
Спасибо за помощь! Andrea
1 ответ
Я обнаружил, что проблема в рамках. После прокрутки пользовательский интерфейс не отвечает должным образом, поэтому мне пришлось дважды нажать на ячейку, чтобы оставить UIResponder, а затем тест работает должным образом. Я также сообщил о проблеме , чтобы узнать, является ли это обычным поведением или нет.
Однако спасибо всем! Удачного кодирования!