Home  >  Q&A  >  body text

swift - ios自动化测试UITests有什么延迟等待的方法?

自动化测试延迟等待,比如页面还没加载出来,需要等待加载完再继续执行后续操作,在规定时间内无法响应则另做加载失败的操作。

就是希望能像Selenium WebDriver那种,类似
tjbb = WebDriverWait(browser, 10).until(

EC.presence_of_all_element_located((By.CLASS_NAME, "domName"))

);
browser.find_element_by_class_name("domName2").click()
虽然不是WebDriver,但目前用pressForDuration(2)的时候,固定等待2秒,测试有时候正常有时候不正常,主要是在有网络请求延迟导致UI有延迟响应的情况下发生。

PHP中文网PHP中文网2760 days ago1007

reply all(1)I'll reply

  • 高洛峰

    高洛峰2017-04-18 09:45:17

    There is an important method in unit testing called expectation, which is used to wait for asynchronous processes. See the following case for details:

    // 首先设置一个期望目标,如果异步调用不满足这个目标则可以采用等待直到目标达成或超时
    let expectation = self.expectation(description: "等待异步调用过程结束")
    
    // 调用异步过程
    performSomethingAsync {
      test1, test2, test3 in
    
      XCTAssertEqual(test1, 0)
      XCTAssertEqual(test2, 200)
      XCTAssert(test3 != nil)
    
      // 所有目标都已经达到,通知主测试线程
      expectation.fulfill()
    }
    
    // 设定等待期望目标时间为10秒钟
    self.waitForExpectations(timeout: 10) { 
      error in
      if let error = error {
          XCTFail("超时错误 \(error.localizedDescription)")
      }
    }

    reply
    0
  • Cancelreply