Selenium IDE - waitFor.. แก้ปัญหา element not found กับ ajax

Software testing ความรู้ สำหรับ Tester ผู้ทดสอบ เป็นส่วนสำคัญในการ test โปรแกรม การ ทดสอบโปรแกรมมีความรู้แนะนำไว้ในหมวดนี้

Moderator: mindphp, ผู้ดูแลกระดาน

chbbk
PHP VIP Members
PHP VIP Members
โพสต์: 2969
ลงทะเบียนเมื่อ: 08/09/2014 10:34 am

Selenium IDE - waitFor.. แก้ปัญหา element not found กับ ajax

โพสต์ที่ยังไม่ได้อ่าน โดย chbbk »

เคยเจอมั้ยคะ element not found ทั้งๆที่ element ที่ว่ามันก็โชว์หราอยู่หน้าจอ
ข้อผิดพลาดอันนี้นี้ถ้าไม่ใช่เราใส่ target ผิดเอง ก็เพราะว่า selenium หาไม่เจอจริงๆค่ะ เพราะมันเป็น ajax
วิธีแก้แบบง่ายๆแต่ได้ผลที่สุดคือสั่งให้ selenium หยุดการทำงานรอ ajax ค่ะ

วิธีสั่งหยุดแบบได้ผลชะงัดคือ pause แต่แนะนำให้ใช้เป็นไม้ตายสุดท้ายเมื่อวิธีอื่นๆไม่ได้ผลค่ะ

คำสั่งรอทั้งหลายจะขึ้นด้วย waitfor...

กระทู้นี้จะแนะนำแค่สองตัวที่(น่าจะ)ใช้บ่อยค่ะ
- waitForVisible รอจนกว่าสิ่งนั้นจะปรากฏ
- waitForElementPresent รอให้ element ที่ระบุโผล่มาบนหน้าเว็บ
ระยะเวลารอก็อยู่ที่เราจะเซ็ท timeout ไว้ค่ะ
default ที่ให้มากับตัว selenium คือ 30000 ms (30วินาที) ถ้าเลยเวลาก็จะได้ error มาค่ะ

สองตัวนี้รอได้เหมือนกันทำงานเหมือนกัน ต่างกันจุดเล็กๆนิดเดียวคือ waitForVisible จะหาไม่พบถ้า element นั้น hidden ค่ะ

รูปแบบ
command: waitForVisible
target: ตำแหน่งของ element ที่เราต้องการรอ
value: ไม่มี

command: waitForElementPresent
target: ตำแหน่งของ element ที่เราต้องการรอ
value: ไม่มี

target ของทั้งสองคำสั่งแนะนำให้เลือกตัวที่จะปรากฎมาเป็นลำดับสุดท้ายนะคะ
เพราะมันจะทำให้เรามั่นใจได้ว่าข้อมูลในหน้านั้นโหลดมาครบแล้วแน่นอน

วิธีใช้
ก็ไม่มีอะไรมากค่ะ เอาคำสั่ง wait ไปแทรกไว้ก่อนคำสั่งที่ถูกฟ้องว่า element not found นั่นแหละ
เช่น
click | link=HOME |
type | id=textbox_search1 | 2014-07

แล้วบังเอิญหน้า home เป็น ajax
ถ้าเราใช้คำสั่ง type ต่อทันทีจะไม่สามารถหา target ให้ type ได้ค่ะเพราะว่าหน้า home ยังไม่มีข้อมูลเลย

งั้นเราก็แทรกคำสั่ง wait ลงไปแบบนี้

click | link=HOME |
waitForVisible | link=Previous |
type | id=textbox_search1 | 2014-07

ทีนี้ก็จะทำการรอจนกว่า link ที่ชื่อ Previous จะปรากฎ
ซึ่งแปลว่าข้อมูลในหน้านั้นส่งมาครบแล้วค่อยทำคำสั่ง type ต่อไปค่ะ :-D
Trust me, I'm a Programmer
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: Google [Bot] และบุคลทั่วไป 3