【问题标题】:In XCUITests, how to wait for existence of several ui elements?在 XCUITests 中,如何等待多个 ui 元素的存在?
【发布时间】:2018-10-12 11:51:09
【问题描述】:

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

【问题讨论】:

    标签: ios swift xctest xcuitest


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      稍微简洁一点的版本:

      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
      }
      

      【讨论】:

        【解决方案3】:

        使用可变参数函数:

        public func exists(_ elements: XCUIElement..., timeout: TimeInterval = 5.0) -> Bool {
            for element in elements {
                if !element.waitForExistence(timeout: timeout) {
                    return false
                }
            }
            return true
        }
        

        用法:

        exists(el1, el2, el3)
        

        【讨论】:

          猜你喜欢
          • 2018-06-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-12-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多