2015-09-22 7 views
15

Ich habe einen Test wie unten bekommen:Xcode UI Testing - Eingabe von Text mit Typetext() -Methode und die Autokorrektur

let navnTextField = app.textFields["First Name"] 
let name = "Henrik" 
navnTextField.tap() 
navnTextField.typeText("Henrik") 
XCTAssertEqual(navnTextField.value as? String, name) 

Problem ist, dass standardmäßig meine iPhone Simulator wegen der Systemeinstellungen polnische Tastatur bekommen hat und " Henrik "wird automatisch durch Autokorrektur in" ha "geändert.

Einfache Lösung ist polnische Tastatur vom iOS Settings zu entfernen. Diese Lösung löst das Problem jedoch nicht, da iPhone Simulator zurückgesetzt werden kann und der Test dann erneut fehlschlägt.

Gibt es eine Möglichkeit, Autokorrektur vor Testfall oder andere Möglichkeit, Text in Textfeld einzugeben.

Antwort

10

Es gibt eine Abhilfe UIPasteboard verwenden Eingabetext zur Verfügung zu stellen:

let navnTextField = app.textFields["First name"] 
navnTextField.tap() 
UIPasteboard.generalPasteboard().string = "Henrik" 
navnTextField.doubleTap() 
app.menuItems.elementBoundByIndex(0).tap() 
XCTAssertEqual(navnTextField.value as? String, name) 

Sie können prüfen, link with description as a workaround for secure input in GM

bearbeiten

Zur besseren Lesbarkeit statt app.menuItems.elementBoundByIndex(0).tap() Sie app.menuItems["Paste"].tap() tun können.

18

Hier ist eine kleine Erweiterung auf XCUIElement dieses Bild Es

extension XCUIElement { 
    // The following is a workaround for inputting text in the 
    //simulator when the keyboard is hidden 
    func setText(text: String, application: XCUIApplication) { 
     UIPasteboard.generalPasteboard().string = text 
     doubleTap() 
     application.menuItems["Paste"].tap() 
    } 
} 

zu erreichen kann wie dieser

let app = XCUIApplication() 
let enterNameTextField = app.otherElements.textFields["Enter Name"] 
enterNameTextField.tap() 
enterNameTextField.setText("John Doe", app) 
  • Kredit verwendet werden, geht für die Umsetzung @Apan
Verwandte Themen