Нарешті, я написав сценарій, який редагує файл .plist симулятора та встановлює ConnectHardwareKeyboard
властивість для вибраного симулятора. Ви правильно почули, він змінює властивість спеціально вибраного симулятора всередині словника "DevicePreferences", а не редагування глобальної властивості.
По-перше, створіть скрипт оболонки на ім’я disabled-hardware-keyboard.sh із наступним вмістом. Ви можете розмістити його в межах "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
Тепер виконайте ці дії, щоб викликати це, передаючи вибраний імітатор у вигляді аргументу:
- Відредагуйте свою схему Xcode (або певну схему тестів інтерфейсу користувача, якщо у вас є)
- Перейдіть до: Тест> Попередні дії
- Додайте новий сценарій, натиснувши символ "+"> "Новий запуск сценарію дії".
- Важливо: У спадному меню "Надати налаштування збірки з" виберіть основну ціль програми, а не ціль тестів інтерфейсу користувача.
- Тепер додайте наступний скрипт у текстову область нижче.
Сценарій всередині тесту> Попередні дії:
#!/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
Час тестувати:
- Запустіть тренажер
- Увімкніть апаратну клавіатуру для неї
- Запустіть будь-який тест на інтерфейс користувача із взаємодією з клавіатурою. Дотримуйтесь перезавантаження симулятора, а апаратна клавіатура відключена. І взаємодія клавіатури тесту працює чудово. :)