2016-06-24 10 views
10

Ich habe UI-Tests, die Login-Funktionalität testen (und es verwendet, um andere Sachen zu testen), aber manchmal, wenn der Fokus von einem Feld zu einem anderen geändert wird - die Tastatur versteckt, und obwohl der Cursor im Feld blinkt, bekomme ich Fehler auf field.typeText - no focused fields to fill.Ist es möglich, die Software-Tastatur über den Code im UI-Test umzuschalten?

Irgendwie erkannte ich, dass das Klicken auf eine Hardware -> Keyboard -> toggle software keyboard Tastatur auf dem Bildschirm bestehen bleibt, so dass Test funktioniert gut. Aber ich muss es auf jedem Testgerät, auf jedem Entwicklungscomputer arbeiten lassen, also möchte ich diese Option programmatisch einstellen, ohne dass "wenn Test fehlschlägt, gehe zu ... und setze ... von Hand" in Readme des Projekts.

Ist es möglich?

Antwort

10

Die derzeit einzige Problemumgehung besteht darin, die Hardwaretastatur in Simulator.app zu deaktivieren, wodurch die Softwaretastatur immer vorhanden ist. Beispiel:

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

aussieht, nachdem es von Hand in Simulator ermöglicht es für UI aktiviert bleibt testet auch. Traurig. – extempl

+0

Ja, aber Sie können es zumindest automatisieren, indem Sie es deaktivieren, bevor Sie Ihre UI-Tests ausführen und es dann nach den UI-Tests wieder aktivieren. Bitte stellen Sie sicher, dass Sie ein Radar auf http://bugreport.apple.com über diesen Fehler einreichen. –

2

Die .plist-Datei des Simulators wurde geändert, um Unterstützung für mehrere Simulatoren hinzuzufügen. Der ConnectHardwareKeyboard-Boolean ist jetzt unter der UDID des Geräts verschachtelt. Glücklicherweise wird diese UDID auch in der PLIST-Datei gespeichert. Sie können diesen Code mit 'run script' unter den Build-Phasen Ihres UITest-Ziels hinzufügen.

Xcode 9 Antwort:

#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