Search code examples
iosswiftxcode-ui-testing

Swift UI Testing Access string in the TextField


I am using the UI Test Case class integrated in Xcode and XCTest to test app UI. I want to test something like this:

app = XCUIApplication()
let textField = app.textFields["Apple"]
textField.typeText("text_user_typed_in")
XCTAssertEqual(textField.text, "text_user_typed_in")

I've tried the textField.value as! String method; it does not work. I've also tried using the new async method with expectationForPredicate(), and it will result in a timeout.

Any idea how to do this or validation of this kind is not possible with UI Test and I could only write black-box tests?


Solution

  • I use this code and it works fine:

    textField.typeText("value")
    XCTAssertEqual(textField.value as! String, "value")
    

    If you're doing something similar and it isn't functioning, I would check to make sure that your textField element actually exists:

    XCTAssertTrue(textField.exists, "Text field doesn't exist")
    textField.typeText("value")
    XCTAssertEqual(textField.value as! String, "value", "Text field value is not correct")