ปัญหามีอยู่ว่า

ไม่สามารถทำการเขียน code เพื่อทำ UI Testing
สำหรับ UISlider ที่มีการแก้ไขรูปแบบการแสดงผลได้

สิ่งที่เจอคือ ทำการหมุน UISlider จากแนวนอนไปเป็นแนวตั้ง
ทำให้รูปแบบของการหา element และการจัดการที่ต่างออกไป !!

วิธีการแก้ไข

โดย UISlider แบบปกตินั้น
สามารถสั่งให้เลื่อนค่าใน UISlider ได้ผ่าน method adjust() ดังนี้

app.sliders["id"].adjust(toNormalizedSliderPosition: 0.05)

แต่เมื่อเจอของจริง ๆ มันไม่ได้
เนื่องจากทำการหมุนไปทิศทางอื่น ๆ
ดังนั้น จึงเริ่มทำความเข้าใจกับการทำงานของ method adjust() ก่อน
ด้วยการเขียน extension ดังนี้

เรียกใช้งานแบบนี้ ซึ่งทำงานได้เหมือนกัน
แสดงว่าน่าจะเดินมาในทางที่น่าจะถูก !!

app.sliders["id"].adjustX(toNormalizedSliderValue: 0.05)

จากนั้นก็เริ่มไปทดสอบกับ UISlider ในรูปแบบอื่น ๆ
ทั้งการหมุนมุมต่าง ๆ เช่น

  • 90 องศาทั้งบวกและลบ
  • 180 องศา

แสดงค่าเริ่มต้นดังรูป

จากการศึกษาและทดลองของการหมุนในแต่ละรูปแบบ
ก็มีการคำนวณที่แตกต่างกัน
ทั้งแกนที่ใช้งานคือ แกม x และแกน y
รวมทั้งจุดเริ่มต้นของ Thumb ว่าอยู่ตรงไหนอีกด้วย
และจุดที่ต้องการให้เลื่อนไป
โดยค่า default มีค่าตั้งแต่ 0 ถึง 1

โดยอีก 3 แบบสามารถเขียน code เพื่อควบคุม UISlider ได้ตามความต้องการ
ซึ่งใส่จากซ้ายไปขวา และ บนลงล่างดังนี้

ตัวอย่างของ source code อยู่ที่ Github :: Up1

ขอให้สนุกกับการ coding ครับ

Reference Websites
http://masilotti.com/ui-testing-cheat-sheet/