Son olarak, Simulator'un .plist dosyasını ConnectHardwareKeyboard
düzenleyen ve seçilen simülatör için özelliği false olarak ayarlayan bir komut dosyası yazdım . Doğru duydunuz, genel özelliği düzenlemek yerine "DevicePreferences" sözlüğünde özel olarak seçilen simülatörün özelliğini değiştirir.
İlk olarak, aşağıdaki içeriklerle devre dışı- hardware-keyboard.sh adlı bir kabuk betiği oluşturun . "Projeniz / xyzUITests / Scripts /" içine yerleştirebilirsiniz.:
echo "Script: Set ConnectHardwareKeyboard to false for given Simulator UDID"
if [[ $1 != *-*-*-*-* ]]; then
echo "Pass device udid as first argument."
exit 1
else
DEVICE_ID=$1
fi
DEVICE_PREFERENCES_VALUE='<dict><key>ConnectHardwareKeyboard</key><false/></dict>'
killall Simulator # kill restart the simulator to make the plist changes picked up
defaults write com.apple.iphonesimulator DevicePreferences -dict-add $DEVICE_ID $DEVICE_PREFERENCES_VALUE
open -a Simulator # IMPORTANT
Şimdi seçilen simülatörün udid'ini argüman olarak geçirerek çağırmak için şu adımları izleyin:
- Xcode şemanızı düzenleyin (veya varsa UI testlerine özgü şema)
- Test> Ön işlemler
- "+" Sembolü> "Yeni Komut Dosyası Çalıştır'ı" na dokunarak yeni komut dosyası ekleyin.
- Önemli: İçinde "Oluşturma ayarlarını sağlayın" açılır menüsünde, kullanıcı arayüzü test hedefini değil ana uygulama hedefinizi seçin.
- Şimdi aşağıdaki komut dosyasını aşağıdaki metin alanına ekleyin.
Test içindeki komut dosyası> Ön eylemler:
#!/bin/sh
# $PROJECT_DIR is path to your source project. This is provided when we select "Provide build settings from" to "AppTarget"
# $TARGET_DEVICE_IDENTIFIER is the UDID of the selected simulator
sh $PROJECT_DIR/xyzUITests/Scripts/disable-hardware-keyboard.sh $TARGET_DEVICE_IDENTIFIER
# In order to see output of above script, append following with it:
# | tee ~/Desktop/ui-test-scheme-prescript.txt
Test etme zamanı:
- Başlat simülatörü
- Bunun için donanım klavyesini etkinleştir
- Klavye etkileşimi ile herhangi bir UI testi çalıştırın. Simülatörün yeniden başladığını ve donanım klavyesinin devre dışı olduğunu gözlemleyin . Ve testin klavye etkileşimi iyi çalışıyor. :)