2016-11-25 1 views
1

최근 SWIFT로 XCode UI 테스트를 시작했습니다.expectationForPredicate가 테스트 케이스를 실패합니다

내 문제는 요소가 iPhone 화면에 나타날 때까지 기다려야한다는 것입니다.

'' 'expectationForPredicate' ''및 '' ''waitForExpectationsWithTimeout '' '으로 솔루션을 찾았지만이 메서드는 예상 조건자가 시간 초과 내에 일치하지 않으면 테스트 케이스가 실패하도록 설계되었습니다.

요소가 나타나지 않고 시간 초과가 초과되면 테스트 케이스가 실패하지 않게하려면 요소가 화면에 표시 될 때까지 기다릴 수있는 코드가 필요합니다. 오히려 나는 (안 존재) 나는 것과 위에서 언급 한 기능을 피함으로써 솔루션 내 테스트를 실패하는 대신 참 또는 거짓 아래

가있다 돌아오고 발견

답변

0

거짓/(요소가 존재)가 true를 반환하고 싶습니다 내가 만든 방법

func waitForElementToAppear(element: XCUIElement, file: String = #file, line: UInt = #line) -> Bool { 
    let TIMEOUT: Double = 120 ; 
    var isFound = false; 
    let start = NSDate(); 
    var diff : Double = 0; 
    repeat{ 
     print("Is element \(element) found : \(element.exists)") 
     print("Printing debugDescription -> ") 
     print(XCUIApplication().debugDescription) 
     if(element.exists){ 
      isFound = true; 
      break; 
     } 
     print("Waiting for element to exists... Time counter :\(diff)") 
     sleep(1) 
     let end = NSDate(); 
     diff = end.timeIntervalSinceDate(start); 
    }while(diff <= TIMEOUT); 
    return isFound; 
} 

다른 사람들에게 도움이되기를 바랍니다. 다른 해결책이 더 있으면 여기에서 대답하십시오.