В XCUITests, как ждать существования нескольких элементов пользовательского интерфейса? - PullRequest
0 голосов
/ 12 октября 2018

Каков наилучший способ ожидания существования нескольких XCUIElement с при выполнении UITests в XCode?

Ответы [ 3 ]

0 голосов
/ 26 октября 2018

Немного более лаконичная версия:

func waitForExistenceOfAll(elements: [XCUIElement], for timeout: TimeInterval) -> Bool {
    for _ in 0 ... Int(timeout) {
        if elements.filter({ $0.exists == false }).isEmpty {
            return true
        }

        Thread.sleep(forTimeInterval: 1)
    }

    return false
}
0 голосов
/ 13 ноября 2018

Также отметьте это: https://pspdfkit.com/blog/2016/running-ui-tests-with-ludicrous-speed/

Вы можете использовать его в основном как ожидание чего-либо, что даст вам Bool в качестве возврата (несколько условий и т.д.)

0 голосов
/ 12 октября 2018

Я обнаружил, что этот код работает.Мы запускаем цикл в течение времени ожидания, ожидая 1 секунду между итерациями.На каждом шаге мы проверяем, существуют ли все элементы, возвращаем true, если они есть, продолжаем в противном случае.

func waitForExistenceOfAll(elements: [XCUIElement], for timeout: TimeInterval) -> Bool {
        guard elements.count > 0 else {
            return true
        }
        let startTime = NSDate.timeIntervalSinceReferenceDate
        while (NSDate.timeIntervalSinceReferenceDate - startTime <= timeout) {
            var allExist = true
            for element in elements {
                if !element.exists {
                    allExist = false
                    break
                }
            }
            if allExist {
                return true
            }
            sleep(1)
        }
        return false
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...