最後に、シミュレーターの.plistファイルを編集して、 ConnectHardwareKeyboard
し、選択したシミュレータのプロパティをfalseに。正しく聞こえました。グローバルプロパティを編集するのではなく、「DevicePreferences」ディクショナリ内の特定のシミュレータのプロパティを変更します。
まず、次の内容で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テストを実行します。守っシミュレータの再起動をし、ハードウェアキーボードが無効になっています。そして、テストのキーボード操作は正常に機能しています。:)