最后,我编写了一个脚本,该脚本编辑Simulator的.plist文件,并将ConnectHardwareKeyboard
所选模拟器的属性设置为false。您没听错,它会更改“ DevicePreferences”词典中专门选择的模拟器的属性,而不是编辑global属性。
首先,使用以下内容创建一个名为disable-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
现在,按照以下步骤通过将选定模拟器的udid作为参数传递来调用它:
- 编辑您的Xcode方案(如果有,则进行UI测试特定方案)
- 转到:测试>预操作
- 通过点击“ +”符号>“新运行脚本操作”来添加新脚本。
- 重要提示:在“从中提供构建设置”下拉菜单中,选择您的主要应用目标,而不是UI测试目标。
- 现在,在下面的文本区域中添加以下脚本。
Test> Pre-actions中的脚本:
#!/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
测试时间:
- 启动模拟器
- 为此启用硬件键盘
- 通过键盘交互运行任何UI测试。观察模拟器重新启动,并且硬件键盘已禁用。并且测试的键盘交互工作正常。:)