首页 > 解决方案 > 在 XCUITests 中,如何等待多个 ui 元素的存在?

问题描述

XCUIElement在 XCode 中进行 UITests 时等待多个 s 存在的最佳方法是什么?

标签: iosswiftxctestxcuitest

解决方案


我发现这段代码可以工作。我们运行一个超时持续时间的循环,在迭代之间等待 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
}

推荐阅读