2016-11-25 10 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; 
} 

私はこれが他の人に役立つことを願っていますが、まだ他のよりよい解決策がある場合は、ここで答えてください。

関連する問題