Akhirnya, saya menulis skrip yang mengedit file .plist Simulator dan menyetel ConnectHardwareKeyboard
propertinya ke false untuk simulator yang dipilih. Anda dengar itu benar, itu mengubah properti untuk simulator yang dipilih secara khusus di dalam kamus "DevicePreferences" daripada mengedit properti global.
Pertama, buat skrip shell bernama disable-hardware-keyboard.sh dengan konten berikut. Anda dapat menempatkannya di dalam "YourProject / xyzUITests / Scripts /" .:
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
Sekarang ikuti langkah-langkah ini untuk memanggilnya dengan meneruskan udid simulator yang dipilih sebagai argumen:
- Edit skema Xcode Anda (atau tes UI skema tertentu jika Anda punya)
- Pergi ke: Tes> Tindakan sebelumnya
- Tambahkan skrip baru dengan mengetuk simbol "+"> "Tindakan Skrip Jalankan Baru".
- Penting: Di dalam menu drop-down "Berikan setelan build dari", pilih target aplikasi utama Anda, bukan target pengujian UI.
- Sekarang tambahkan skrip berikut di area teks di bawah.
Script di dalam Tes> Tindakan sebelumnya:
#!/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
Saatnya mengujinya:
- Luncurkan simulator
- Aktifkan keyboard perangkat keras untuk itu
- Jalankan pengujian UI apa pun dengan interaksi keyboard. Amati simulator mulai ulang dan keyboard perangkat keras dinonaktifkan. Dan interaksi keyboard tes berfungsi dengan baik. :)