Finalmente, escribí un script que edita el archivo .plist del Simulador y establece el ConnectHardwareKeyboard
propiedad en falso para el simulador seleccionado. Lo escuchaste bien, cambia la propiedad del simulador específicamente seleccionado dentro del diccionario "DevicePreferences" en lugar de editar la propiedad global.
Primero, cree un script de shell llamado disable-hardware-keyboard.sh con los siguientes contenidos. Puede colocarlo dentro de "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
Ahora siga estos pasos para llamarlo pasando el udid del simulador seleccionado como argumento:
- Edite su esquema Xcode (o UI prueba un esquema específico si tiene uno)
- Vaya a: Prueba> Acciones previas
- Agregue un nuevo script tocando el símbolo "+"> "Nueva acción de ejecutar script".
- Importante: Dentro del menú desplegable "Proporcionar configuración de compilación desde", elija el objetivo principal de la aplicación, no el objetivo de las pruebas de IU.
- Ahora agregue el siguiente script en el área de texto a continuación.
Script dentro de Prueba> Pre-acciones:
#!/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
Hora de probarlo:
- Simulador de lanzamiento
- Habilitar teclado de hardware para ello
- Ejecute cualquier prueba de IU con interacción con el teclado. Observe que el simulador se reinicia y el teclado del hardware está deshabilitado. Y la interacción del teclado de la prueba está funcionando bien. :)