2016-03-29 2 views
1

Ich versuche, eine Do-Try-Catch in Swift für meine iOS UI Test schreiben, die XCUI-Tests verwendet. Ich lese die Fehlerbehandlung Abschnitt: https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/ErrorHandling.html#//apple_ref/doc/uid/TP40014097-CH42-ID508 aber ich bin mir nicht sicher, welcher Fehler ausgelöst werden soll, wenn ein Element nicht gefunden wird.Wie man richtig Fehler handle XCUI-Element nicht in Swift gefunden

func tapElement(string:String) throws { 

    do{ 
     waitFor(app.staticTexts[string], 5) 
     try app.staticTexts[string].tap() 
    } 
    catch { 
     NSLog("Element was not found: \(string)") 
     //how can i check specifically that the element was not found? 
    } 


} 

....

func waitFor(element:XCUIElement, seconds waitSeconds:Double) { 
    NSLog("Waiting for element: \(element)") 
    let exists = NSPredicate(format: "exists == 1") 
    expectationForPredicate(exists, evaluatedWithObject: element, handler: nil) 
    waitForExpectationsWithTimeout(waitSeconds, handler: nil) 
} 

jede Hilfe sehr dankbar !!

Antwort

1

Sie sollten nicht versuchen, in UI Testing Elemente zu finden. Fragen Sie das Framework, wenn das Element exists() vor dem Versuch, tap() es.

let app = XCUIApplication() 
let element = app.staticTexts["item"] 
if element.exists { 
    element.tap() 
} else { 
    NSLog("Element does not exist") 
} 

überprüfen meine blog post on getting started with UI Testing für spezifischere Beispiele aus, like tapping an button.

+0

Es gibt Zeiten, die würde ich würde gerne würde behandeln, wenn Elemente nicht gefunden werden – 1ak31sha

+0

Ich hatte schon gelesen, durch Ihren Blog, es war eine großartige Quelle. aber ich suche keinen Ratschlag auf Knopfdruck. Jeder Einblick in die Verwendung der Versuch fangen, Fehler elegant zu behandeln würde sehr geschätzt – 1ak31sha

+0

* Warum * versuchen Sie zu fangen? Siehe meine Bearbeitung, um zu überprüfen, ob das Element existiert. –