2015-09-22 9 views
15

Mam test jak poniżej:Xcode UI Testing - wpisując tekst z TypeText() metoda i autokorekty

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

Problem jest to, że domyślnie mój iPhone Simulator posiada polską klawiaturę z powodu ustawień systemowych i " Henrik "automatycznie zmienia się na" ha "przez autokorektę.

Prostym rozwiązaniem jest usunięcie polskiej klawiatury z iOS Settings. To rozwiązanie jednak nie rozwiązuje problemu, ponieważ można zresetować iPhone Simulator, a następnie test ponownie się nie powiedzie.

Czy istnieje sposób konfiguracji autokorekty przed przypadkiem testowym lub inny sposób wprowadzania tekstu do pola tekstowego.

Odpowiedz

10

Istnieje obejście używać UIPasteboard dostarczenie tekstu wejściowego:

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) 

Można sprawdzić link with description as a workaround for secure input in GM

Edycja

Dla lepszej czytelności zamiast app.menuItems.elementBoundByIndex(0).tap() można zrobić app.menuItems["Paste"].tap().

18

Oto małe rozszerzenie na XCUIElement do osiągnięcia tego

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() 
    } 
} 

Może być używany jak to

let app = XCUIApplication() 
let enterNameTextField = app.otherElements.textFields["Enter Name"] 
enterNameTextField.tap() 
enterNameTextField.setText("John Doe", app) 
  • zasługa @Apan na realizację
Powiązane problemy