2016-06-24 11 views
10

Mam testy interfejsu użytkownika, które testują funkcjonalność logowania (i używają go do testowania innych rzeczy), ale czasami gdy fokus jest zmieniany z jednego pola na drugie - klawiatura chowa się i chociaż kursor miga w polu, pojawia się błąd field.typeText - no focused fields to fill.Czy można "przełączać klawiaturę oprogramowania" za pomocą kodu w teście interfejsu użytkownika?

Jakoś sobie sprawę, że kliknięcie na Hardware -> Keyboard -> toggle software keyboard sprawia, że ​​klawiatura pozostaje na ekranie, więc test działa dobrze. Ale muszę sprawić, aby działał on na dowolnym urządzeniu testującym, na dowolnym komputerze programisty, więc chcę ustawić tę opcję programowo, bez irytujących "jeśli test nie powiedzie się, przejdź do ... i ustaw ... ręcznie" w pliku readme projektu.

Czy to możliwe?

Odpowiedz

10

Jedynym znanym sposobem obejścia tego problemu jest obecnie wyłączenie klawiatury sprzętowej w Simulator.app, co spowoduje, że klawiatura oprogramowania będzie zawsze obecna. Np .:

defaults write com.apple.iphonesimulator ConnectHardwareKeyboard -bool NO 
+0

Wygląda na to, po włączeniu go ręcznie w symulatorze to pozostanie włączone dla interfejsu testuje też. Smutny. – extempl

+0

Tak, ale można przynajmniej zautomatyzować wyłączenie go przed uruchomieniem testów interfejsu użytkownika, a następnie ponowne włączenie go po testach interfejsu użytkownika. Upewnij się, że zgłosisz radar na http://bugreport.apple.com o tym błędzie. –

2

Zmieniono plik .plist symulatora, aby dodać obsługę wielu symulatorów. Boolean ConnectHardwareKeyboard jest teraz zagnieżdżony pod identyfikatorem UDID urządzenia. Na szczęście ten identyfikator UDID jest również przechowywany w pliku plist. Możesz dodać ten kod za pomocą "uruchom skrypt" pod etapami budowania twojego docelowego UITest.

Xcode 9 odpowiedź:

#grab the UDID from the plist 
UDID=$(defaults read com.apple.iphonesimulator CurrentDeviceUDID) 

#overwrite the existing value with false 
#OR if the plist doesn't have that value add it in 
/usr/libexec/PlistBuddy -c "Set :DevicePreferences:$UDID:ConnectHardwareKeyboard 
false" ~/Library/Preferences/com.apple.iphonesimulator.plist 
|| 
/usr/libexec/PlistBuddy -c "Add :DevicePreferences:$UDID:ConnectHardwareKeyboard 
bool false" ~/Library/Preferences/com.apple.iphonesimulator.plist 
Powiązane problemy