2015-11-18 17 views
7

Tôi đang sử dụng lớp UI Test Case được tích hợp trong Xcode và XCTest để kiểm tra giao diện người dùng ứng dụng. Tôi muốn thử nghiệm một cái gì đó như thế này:Chuỗi truy cập kiểm tra giao diện người dùng Swift trong TextField

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

Tôi đã cố gắng textField.value as! Chuỗi phương pháp; nó không hoạt động. Tôi cũng đã thử sử dụng phương pháp async mới với expectationForPredicate() và sẽ dẫn đến thời gian chờ.

Bất kỳ ý tưởng nào về cách thực hiện việc này? Hoặc không thể xác thực loại này là không thể với Kiểm tra giao diện người dùng và tôi chỉ có thể viết các thử nghiệm hộp đen?

+0

Thx @Charles A. để chỉ ra rằng vấn đề là textField không tồn tại. Tôi bối rối vì tôi gọi phương thức typeText và tôi có thể thấy rằng văn bản đang được nhập vào textField. – leoluo

Trả lời

17

tôi sử dụng đoạn mã này và nó hoạt động tốt:

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

Nếu bạn đang làm một cái gì đó tương tự và nó không hoạt động, tôi sẽ kiểm tra để chắc chắn rằng yếu tố TextField của bạn thực sự tồn tại:

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

Vâng bạn nói đúng. TextField không tồn tại. Nhưng tôi không hiểu điều này: Tôi gọi typeText trên textField và tôi có thể thấy rằng văn bản đang được nhập vào textField. – leoluo

+0

Tôi có nên sử dụng phương pháp async không? – leoluo

+0

Văn bản ban đầu là "Apple" phải không? Hành vi mặc định có thể là nhãn trợ năng của trường là nội dung của nó, do đó truy vấn thất bại lần thứ hai bạn thử và giải quyết một phần tử. –

Các vấn đề liên quan