Por fim, escrevi um script que edita o arquivo .plist do Simulator e define a ConnectHardwareKeyboard
propriedade como false para o simulador selecionado. Você ouviu direito, ele altera a propriedade do simulador especificamente selecionado no dicionário "DevicePreferences", em vez de editar a propriedade global.
Primeiro, crie um script de shell chamado disable-hardware-keyboard.sh com o seguinte conteúdo. Você pode colocá-lo em "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
Agora siga estas etapas para chamá-lo passando o udid do simulador selecionado como argumento:
- Edite seu esquema Xcode (ou a interface do usuário testa o esquema específico, se você tiver um)
- Vá para: Teste> Pré-ações
- Adicione um novo script tocando no símbolo "+"> "Nova ação de execução de script".
- Importante: no menu suspenso "Fornecer configurações de compilação de", escolha seu destino principal do aplicativo, não o destino dos testes de interface do usuário.
- Agora adicione o seguinte script na área de texto abaixo.
Script dentro de Teste> Pré-ações:
#!/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 testá-lo:
- Simulador de lançamento
- Ativar teclado de hardware para ele
- Execute qualquer teste de interface do usuário com a interação do teclado. Observe que o simulador reinicia e o teclado do hardware está desativado. E a interação do teclado do teste está funcionando bem. :)