Customise Drag and Drop keyword ด้วยตัวเอง

Customise Drag and Drop keyword ด้วยตัวเอง

สวัสดีผู้อ่านทุกท่าน วันนี้จะมาแนะนำ Keyword เจ้าปัญหา ที่มักจะพบในการเรียกใช้งาน Selenium library นั่นก็คือ Drag and Drop พร้อมแนะนำวิธี Customise Drag and Drop keyword ด้วยตัวเอง เพื่อนำมาใช้งาน

ขอเกริ่นถึงรายละเอียดของ drag_and_drop ก่อนนะคะ อาจจะดู technical แต่แค่เกริ่นแน่นอนว่าไม่ปวดหัว
จากภาพข้างต้น ทางนักพัฒนาได้เขียนรายละเอียดของการเรียกใช้งาน Keyword ไว้ โดยขั้นแรกของ keyword จะมีการเรียกใช้งาน function อีกทีนึง
ตามมาดู function ที่ถูกเรียกใช้งาน ทำให้เห็นว่าจริงๆแล้ว ก็มีการเรียกใช้งานของ function ซ้อนเข้าไปอีกขั้น(เรียกซ้อนเยอะจังงงง) แต่จะมีการแยกในการทำแต่ละ step โดยเริ่มแรกจะเรียกการใช้งาน click_and_hold(source) และ release(target)
โดย click_and_hold(source) จะเป็นการ เลื่อน mouse ไปหา locator(source) หลังจากนั้น click down หรือใช้คำว่า mouse down ที่ locator source
และ release(target) จะเป็นการเลื่อน mouse ไปหา locator(target) หลังจากนั้น release mouse หรือใช้คำว่า mouse up ที่ locator target
 
การแกะ code ออกมาทั้งหมด การใช้งาน drag and drop นั้นจะเป็นการใช้งาน Mouse down, Mouse over และ Mouse up เพียงเท่านั้น
 
ทีนี้ปัญหาที่คนส่วนใหญ่เจอคือ ไม่สามารถใช้งาน keyword ได้ เนื่องจากปัญหา HTML code, ประเภทของ browser หรือประเภทของ locator draggable = “false” แต่ถ้าเราอยากจะใช้งานละ ทำอย่างไรดี?
 
ถ้ามองภาพใหญ่ การ Drag and Drop นั้น เกิดจากการกระทำดังนี้ คือ กด mouse > ลาก mouse ไปยังตำแหน่งที่ต้องการ > ปล่อย mouse จึงทำให้เราสามารถเขียน Customise keyword ได้ดังนี้
ทำไมถึงต้องมี Mouse Out ที่ไม่เหมือน Drag and Drop กันละ?
ก็ตามการกระทำ เราต้องลาก Mouse ออกจากตำแหน่งเดิมก่อนเสมอนั่นเอง => Mouse Out
 
แล้วเราจะรู้ได้ยังไงว่า keyword ที่เราเขียนสามารถใช้งานจริงได้ไหมหรือ keyword อาจจะทำงานเร็วเกินกว่าที่คาดหวัง ทำให้มีการเรียกใช้ Wait Until Keyword Succeeds เพื่อการันตีอีกรอบ เพราะถ้าหาก Fail ก็จะมีการ Retry ในช่วงเวลาที่เรากำหนดไว้ จนกว่าจะสำเร็จ(ก็วนไปเรื่อยๆจนกว่าจะ Timeout ถ้ายัง Fail ก็ให้รู้กันไป) ทำให้เขียนออกมาได้รูปแบบดังนี้
หวังว่าบทความนี้จะช่วยเหลือผู้อ่านที่ติดปัญหา Drag and Drop ให้ผ่านลุล่วงไปได้ด้วยดี
หากมีคำแนะนำหรือติชมอื่นๆ สามารถ Comment กันมาได้เลยนะคะ

43 Thai CC Tower, 23rd Floor, Room 234,
South Sathorn Rd., Yannawa, Sathorn, Bangkok 10120

Email : qsquad.qa@gmail.com