สุดท้ายฉันเขียนสคริปต์ซึ่งแก้ไขไฟล์. plist ของ Simulator และตั้งค่าไฟล์ ConnectHardwareKeyboard
คุณสมบัติเป็นเท็จสำหรับโปรแกรมจำลองที่เลือก คุณได้ยินถูกต้องมันเปลี่ยนคุณสมบัติสำหรับโปรแกรมจำลองที่เลือกไว้โดยเฉพาะในพจนานุกรม "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 จะทดสอบรูปแบบเฉพาะหากคุณมี)
- ไปที่: ทดสอบ> ก่อนการดำเนินการ
- เพิ่มสคริปต์ใหม่โดยแตะสัญลักษณ์ "+"> "New Run Script Action"
- สิ่งสำคัญ:ภายในเมนูแบบเลื่อนลง "ให้การตั้งค่าบิวด์จาก" ให้เลือกเป้าหมายแอปหลักของคุณไม่ใช่เป้าหมายการทดสอบ 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
เวลาทดสอบ:
- เปิดตัวจำลอง
- เปิดใช้งานแป้นพิมพ์ฮาร์ดแวร์สำหรับมัน
- เรียกใช้การทดสอบ UI ด้วยการโต้ตอบกับแป้นพิมพ์ สังเกตตัวจำลองรีสตาร์ทและแป้นพิมพ์ฮาร์ดแวร์ถูกปิดใช้งาน และการโต้ตอบกับแป้นพิมพ์ของการทดสอบทำงานได้ดี :)