अंत में, मैंने एक स्क्रिप्ट लिखी जो सिम्युलेटर की .plist फ़ाइल को संपादित करती है और सेट करती है ConnectHardwareKeyboard
चयनित सिम्युलेटर के लिए झूठी संपत्ति है। आपने इसे सही सुना, यह वैश्विक डिवाइस को संपादित करने के बजाय "DevicePreferences" शब्दकोश के अंदर विशेष रूप से चयनित सिम्युलेटर के लिए संपत्ति को बदलता है।
सबसे पहले, निम्नलिखित सामग्रियों के साथ एक शेल स्क्रिप्ट बनाएं, जिसे निष्क्रिय- हार्डवेयर-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 योजना संपादित करें (या यदि आपके पास एक है तो UI परीक्षण विशिष्ट योजना)
- पर जाएं: परीक्षण> पूर्व-क्रियाएं
- "+" प्रतीक> "नया रन स्क्रिप्ट एक्शन" टैप करके नई स्क्रिप्ट जोड़ें।
- महत्वपूर्ण: अंदर "ड्रॉपडाउन से बिल्ड सेटिंग प्रदान करें" अपना मुख्य ऐप लक्ष्य चुनें, यूआई परीक्षण लक्ष्य नहीं।
- अब नीचे पाठ क्षेत्र में निम्नलिखित स्क्रिप्ट जोड़ें।
टेस्ट के अंदर स्क्रिप्ट> पूर्व क्रियाएं:
#!/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
इसका परीक्षण करने का समय:
- सिम्युलेटर लॉन्च करें
- इसके लिए हार्डवेयर कीबोर्ड सक्षम करें
- कीबोर्ड इंटरेक्शन के साथ कोई भी यूआई टेस्ट चलाएं। सिम्युलेटर रीस्टार्ट को ध्यान से देखें और हार्डवेयर कीबोर्ड अक्षम है। और परीक्षण का कीबोर्ड इंटरैक्शन ठीक काम कर रहा है। :)