Как подождать в UITests в Xcode, пока какой-либо вид не будет виден для tap?

#ios #swift #xcode-ui-testing

#iOS #swift #xcode-ui-тестирование

Вопрос:

Иногда в UITests в Xcode компилятор пытается нажать на кнопку, прежде чем она будет загружена и представлена. Затем возникает такая проблема, как no matched found for... .

Но простое решение для этого:

 sleep(1) //wait 1 second and give `mybutton` time to load and be accessible for uitests
mybutton.tap()
  

Но это ужасно, поскольку я не могу указать его в 0.1 качестве параметра. И меня раздражает ждать 1 секунду перед множеством кнопок.

Есть ли способ подождать, пока оно не станет видимым для uitests?

Ответ №1:

Вы должны создать XCTestExpectation и дождаться его выполнения

 expectationForPredicate(NSPredicate(format: "hittable == true"), evaluatedWithObject: mybutton, handler: nil)
waitForExpectationsWithTimeout(10.0, handler: nil)

mybutton.tap()
  

Комментарии:

1. Для Swift 3 вы можете оставить handler параметры.