Доброго всем времени, решил попробовать свои силы в автоматизации ios приложений с помощью яп Swift и XCode, столкнулся с проблемой создания неявных ожиданий. Кейс для примера:
- Запуск приложения (Пока приложение загружается - крутится прелоадер)
- Появляются поля ввода логина и пароля.
Для ожидания загрузки полей получается использовать явные ожидания Thread.sleep, а вот неявных не смог найти, возможно кто-то уже сталкивался:
public func sleep(timeForSleep: Int) -> Void {
Thread.sleep(forTimeInterval: TimeInterval(timeForSleep));
}
public func tap(element: XCUIElement) -> Void{
element.tap();
}
1 лайк
Apple недавно добавили полноценную поддержку ожиданий в XCTest. В коде это выглядит приблизительно так:
func waitFor(_ element: XCUIElement, _ predicateString: String) {
let expectation = XCTNSPredicateExpectation(predicate: NSPredicate(format: predicateString), object: element)
let time = 10.0
let result = XCTWaiter().wait(for: [expectation], timeout: time)
if result != .completed {
XCTFail("Condition '\(predicateString)' for \(element) was not satisfied during \(time) seconds")
}
}
Затем можно создавать ожидания разных условий с помощью предикатов. Например:
func waitUntilVisible(_ element: XCUIElement) {
return waitFor(element, "exists == true")
}
или
func waitUntilFocused(_ element: XCUIElement) {
return waitFor(element, "hasFocus == true")
}
4 лайка
спасибо за помощь, обязательно попробую и отпишусь!