2016-04-22 1 views
2

Starten der UI Testen Sie mit Xcode auf meinem Projekt, und klicken Sie auf eine Straßensperre.Testen von Xcode-UI So geben Sie Text in benutzerdefinierte Textfelder ein

Es gibt eine Unterklasse von UITextField mit der Bezeichnung RSCustomTextField, die einige UI-Anpassungen enthält. Was zu RSSearchHeadView hinzugefügt wird, das das Textfeld und die Schaltfläche enthält.

So Im nicht in der Lage das Textfeld als app.textfields["Search field"] seit seiner einer benutzerdefinierten Klasse abfragen, zeigt es als app.otherElements["Search field"]

Es auf searchField.typeText("abc") abstürzt Fehler angezeigt Weder Element noch ein Nachkomme hat Tastaturfokus..

Auch nach tap() auf dem Element. Notiz, ich habe auch versucht, Zugänglichkeitsmerkmal für die Unterklasse und das Textfeld als UIAccessibilityTraitSearchField noch keinen Unterschied zu setzen.

func testSearchIcon() { 

    let searchField = app.otherElements["Search field"]  
    searchField.tap() 

    searchField.typeText("abc") 
    app.keys["delete"].tap() 

    XCTAssertFalse(searchDubizzleElement.hittable) 
} 

Printing debugDescription auf App gibt die folgende Ausgabe:

Element subtree: 
→Application 0x7fc1b3f3aa00: {{0.0, 0.0}, {375.0, 667.0}}, label: 'myappname-masked' 
    Window 0x7fc1b3f439b0: Main Window, {{0.0, 0.0}, {375.0, 667.0}} 
     Other 0x7fc1b3f55c20: traits: 8589934592, {{0.0, 0.0}, {375.0, 667.0}} 
     Other 0x7fc1b3f43440: traits: 8589934592, {{0.0, 0.0}, {375.0, 667.0}} 
      Other 0x7fc1b3f31830: traits: 8589934592, {{0.0, 0.0}, {375.0, 667.0}} 
      Other 0x7fc1b3f61ff0: traits: 8589934592, {{0.0, 0.0}, {375.0, 667.0}} 
       Other 0x7fc1b3f52820: traits: 8589934592, {{0.0, 0.0}, {375.0, 64.0}} 
       Other 0x7fc1b3f4e190: traits: 8589934592, {{0.0, 0.0}, {375.0, 64.0}} 
        Button 0x7fc1b3f3a250: traits: 8589934593, {{5.0, 20.0}, {44.0, 44.0}}, label: 'search icon right' 
        Other 0x7fc1b3f349b0: traits: 8589935616, {{15.0, 20.0}, {345.0, 39.0}}, label: 'Search field' 
        Image 0x7fc1b3f3b3b0: traits: 8589934596, {{139.0, 22.0}, {97.0, 30.0}}, identifier: 'logo' 
        Button 0x7fc1b3f537a0: traits: 8589934593, {{326.0, 20.0}, {44.0, 44.0}}, label: 'your account icon' 
       CollectionView 0x7fc1b3f32450: traits: 35192962023424, {{0.0, 64.0}, {375.0, 603.0}} 
       Cell 0x7fc1b3f1e230: traits: 8589934592, {{0.0, 64.0}, {375.0, 50.0}} 

...... 
+0

Ich habe gerade versucht, ein UITextField von der Unterklasse zu einem Storyboard hinzuzufügen und 'debugDescription' zeigt das Element als TextField an. Ist 'RSCustomTextField' wirklich nur eine Unterklasse von UITextField? –

+0

Haben Sie "app.searchFields.element" ausprobiert? – Che

+0

@TomasCamin Sie haben Recht. Es wurde nicht direkt zum View-Controller hinzugefügt. Es befand sich in einer anderen benutzerdefinierten Ansicht mit dem Namen "RSSearchHeadView", in der die benutzerdefinierte Klasse "textField" einfach eine Schaltfläche enthielt. Ich habe die Frage aktualisiert. mein Fehler. Irgendeine Hilfe? – carbonr

Antwort

0

ich mit einer benutzerdefinierten Unterklasse von UITextField in den gleichen Fehler lief. Die Ursache des Problems war die programmatische Einfügung eines leftView auf dem UITextField. Durch die Verwendung dieser Subview-Eigenschaften wird der Zugriff auf Eingabehilfen für die automatisierten UI-Tests beeinträchtigt.

Um dies zu umgehen, vermeide ich die Verwendung von leftView oder rightView auf UITextFields. Stattdessen bin ich zu erreichen die gewünschte Vertiefung durch die textRect Methoden zu modifizieren, wie in einem der Antworten (derzeit die zweitgrößte upvoted) hier beschrieben: Set padding for UITextField with UITextBorderStyleNone

Ich kann nicht aus dem Code sagen, ob Ihr Problem ist die gleiche, aber Gedanken Ich würde diese kleine Entdeckung teilen.

Verwandte Themen