2015-08-05 13 views

risposta

9

Supponiamo di avere un campo di testo in questo modo: (. Sto hardcoding il suo valore lì ("Testo") per fare un esempio)

enter image description here

Assegnare un'etichetta di accessibilità. In questo caso, sto assegnando l'etichetta "Campo di testo".

Ora per accedere il suo valore, si potrebbe fare qualcosa di simile:

func testExample() { 

    let app = XCUIApplication()   
    let textField = app.textFields["Text Field"] 
    XCTAssertTrue(textField.value as! String == "My Text") 

    // So basically "textField.value" 
} 

Su un lato nota: in caso di dubbio su come accedere a determinate proprietà di un dato XCUIElement, ho scoperto che il "debugDescription" aiuta molto

ad esempio, impostare un punto di interruzione dopo la dichiarazione di proprietà, eseguire il test, attendere che l'applicazione di fermarsi al punto di rottura, andare a lldb console, tipo "po propertyName.debugDescription", controllare l'output ...

enter image description here

Spero che questo aiuti.

+0

Quell'ultimo piccolo trucco di debug è stato davvero disponibile, Grazie! – smac89

2

lascia supporre che voglio ottenere la stringa che viene stampato per la barra di navigazione del mio app

enter image description here

Quello che ho fatto è stato ho creato un XCUIElement per la mia barra di navigazione:

XCUIApplication *app = [[XCUIApplication alloc] init]; 
XCUIElement *navBarTitle = [app.navigationBars elementBoundByIndex:0]; 

Ho quindi inserito un punto di interruzione dopo la creazione dell'oggetto navBarTitle e ho utilizzato la console di debug per stampare i dettagli dell'oggetto navBarTitle:

print out

che vedete nella stampa dalla console di debug che ci sia una chiave chiamato identificatore.

Per estrarre la stringa da quell'oggetto, ho creato un oggetto NSString utilizzando il seguente metodo:

NSString *nameofuser = [navBarTitle valueForKey:@"identifier"]; 

ho usato il XCUIElement navBarTitle e poi utilizzato il metodo valueForKey. valueForKey estrae il valore stringa per l'identificatore della chiave.

si può leggere su questo metodo qui: NSKeyValueCoding

valueForKey è la chiave per sbloccare la risposta a questa domanda .... pun intended :)

+0

Non riesco a sopravvalutarlo abbastanza! Il "po ..." in lldb è un salvavita! – rhcpfan