W moim teście mam pole tekstowe z wcześniej istniejącym tekstem. Chcę usunąć zawartość i wpisać nowy ciąg.UI Test usuwania tekstu w polu tekstowym
let textField = app.textFields
textField.tap()
// delete "Old value"
textField.typeText("New value")
Podczas usuwania znaków z klawiatury sprzętowej nagrywania wygenerowanego dla mnie niczym. Po robi to samo z klawiaturą oprogramowania mam:
let key = app.keys["Usuń"] // Polish name for the key
key.tap()
key.tap()
... // x times
lub
app.keys["Usuń"].pressForDuration(1.5)
Martwiłam się, że mój test jest zależne od języka, więc stworzyliśmy coś takiego dla moich obsługiwanych języków:
extension XCUIElementQuery {
var deleteKey: XCUIElement {
get {
// Polish name for the key
if self["Usuń"].exists {
return self["Usuń"]
} else {
return self["Delete"]
}
}
}
}
wygląda ładniej w kodzie:
app.keys.deleteKey.pressForDuration(1.5)
, ale jest bardzo delikatna. Po wyjściu z symulatora Toggle software keyboard
został zresetowany i mam test niesprawności. Moje rozwiązanie nie działa dobrze z testowaniem CI. Jak można to rozwiązać, aby było bardziej uniwersalne?
Nie mogę odtworzyć awarii, której doświadczasz. Dodałem to samo rozszerzenie, przełączyłem język mojego symulatora na język polski i zweryfikowałem, że klawisz "Usún" zaczyna być podsłuchiwany. Ponowne uruchomienie/resetowanie symulatora nie ma żadnego wpływu na ustawienie 'Toggle software keyboard'. Czy w widoku tekstowym jest coś jeszcze, co mogłoby ukrywać/zwalniać klawiaturę? –
Może po zrestartowaniu systemu mam reset "Toggle software keyboard". Nie jest to wartość domyślna dla symulatora (i nie wiem, czy można to zmienić). W ten czy inny sposób moja metoda nie jest niezawodna, dopóki nie można ustalić ustawień klawiatury językowej i oprogramowania z poziomu testu (lub schematu testowania). –
Mój własny komentarz wpadł mi na pomysł i znalazłem ustawienie językowe w Scheme> Options> Application Language. Problem z klawiaturą nadal pozostaje nierozwiązany. –