Jak uzyskać wartość textfield
w XCODE7 UITesting?
var b = XCUIApplication().childrenMatchingType(.textField).elementBoundByIndex(0).stringValue
Odpowiedzi:
10 dla odpowiedzi № 1Załóżmy, że masz takie pole tekstowe:
(Mam tam na stałe wartość („Mój tekst”) dla przykładu.)
Nadaj mu etykietę dostępności. W tym przypadku nadaję mu etykietę „Pole tekstowe”.
Aby uzyskać dostęp do jego wartości, możesz zrobić coś takiego:
func testExample() {
let app = XCUIApplication()
let textField = app.textFields["Text Field"]
XCTAssertTrue(textField.value as! String == "My Text")
// So basically "textField.value"
}
Na marginesie: gdy masz wątpliwości, jak uzyskać dostęp do niektórych właściwości danego XCUIElement, stwierdziłem, że „debugDescription„bardzo pomaga.
Na przykład ustaw punkt przerwania za właściwościądeklaracja, wykonaj test, poczekaj, aż aplikacja zatrzyma się w punkcie przerwania, przejdź do konsoli lldb, wpisz „po propertyName.debugDescription”, sprawdź dane wyjściowe ...
Mam nadzieję że to pomogło.
2 dla odpowiedzi nr 2
Załóżmy, że chcę uzyskać ciąg, który zostanie wydrukowany dla paska nawigacji mojej aplikacji
Stworzyłem XCUIElement dla mojego paska nawigacji:
XCUIApplication *app = [[XCUIApplication alloc] init];
XCUIElement *navBarTitle = [app.navigationBars elementBoundByIndex:0];
Następnie ustawiłem punkt przerwania po utworzeniu obiektu navBarTitle i użyłem konsoli debugowania do wydrukowania szczegółów obiektu navBarTitle:
Na wydruku konsoli debugowania widać, że jest klawisz nazywa identyfikator.
Aby wyodrębnić ten ciąg z tego obiektu, utworzyłem obiekt NSString za pomocą następującej metody:
NSString *nameofuser = [navBarTitle valueForKey:@"identifier"];
Użyłem navCarTitle XCUIElement, a następnie zastosowałem metodę valueForKey. wartośćForKey wyodrębnia wartość ciągu dla identyfikatora klucza.
Możesz przeczytać o tej metodzie tutaj: NSKeyValueCoding
valueForKey jest KLUCZEM do odblokowania odpowiedzi na to pytanie .... kalambur zamierzał :)