Am besten warten Sie, bis ein Element der Benutzeroberfläche erscheint oder verschwindet. Stellen Sie es sich so vor:
Das Framework verhält sich wie ein Benutzer. Es ist egal, welcher Code unter der Haube läuft. Es kommt nur darauf an, was auf dem Bildschirm sichtbar ist.
Das heißt, hier ist, wie Sie wait for a label titled "Go!" to appear in Ihre UI-Tests können.
let app = XCUIApplication()
let goLabel = self.app.staticTexts["Go!"]
XCTAssertFalse(goLabel.exists)
let exists = NSPredicate(format: "exists == true")
expectationForPredicate(exists, evaluatedWithObject: goLabel, handler: nil)
app.buttons["Ready, set..."].tap()
waitForExpectationsWithTimeout(5, handler: nil)
XCTAssert(goLabel.exists)
Sie könnten auch extract that into a helper method. Wenn Sie eine Swift-Compiler-Magie verwenden, können Sie sogar die Fehlermeldung in der Zeile namens der Methode erhalten.
private fund waitForElementToAppear(element: XCUIElement, file: String = #file, line: UInt = #line) {
let existsPredicate = NSPredicate(format: "exists == true")
expectationForPredicate(existsPredicate, evaluatedWithObject: element, handler: nil)
waitForExpectationsWithTimeout(5) { (error) -> Void in
if (error != nil) {
let message = "Failed to find \(element) after 5 seconds."
self.recordFailureWithDescription(message, inFile: file, atLine: line, expected: true)
}
}
}
Vielen Dank für die Antwort! – Jeiwan