[Automate Test] Selenium ชีวิตจะดี ถ้าเข้าใจมัน

เกร็ดเล็กเกร็ดน้อย กับการใช้งาน Selenium ที่เจอจัง ๆ แล้วมันจะงง ๆ ถ้าเราคิดผิดวิธี

Siwawes Wongcharoen
1 min readFeb 4, 2024
Selenium

สำหรับ Blog นี้ จะรวบรวม เกร็ดเล็กเกร็ดน้อย ในการทำ Automate Testing (เน้น UI) โดยใช้ Selenium (อันที่จริง ก็ครอบคลุมถึงตัวอื่น ๆ ด้วย) ว่าเจออะไรมาบ้าง แต่แต่ละเรื่องที่เจอ จัดการไปอย่างไร โดยอ้างอิงจาก Website Project ที่พัฒนาขึ้นมาด้วยภาษา Typescript และแน่นอนว่าตัว Test Script ก็เขียนด้วย Typescript เช่นกันครับ

มาเริ่มกันเลย

สิ่งที่เราคิดกับสิ่งที่มันเป็นจริง ๆ อาจจะไม่เหมือนกัน

ยกตัวอย่างเช่น การ Input Form ที่มีการทำ Validation ข้อมูลบางอย่าง (เปลี่ยนสถานะของปุ่มจาก Disable เป็น Enable) แล้วต้องกดปุ่ม Submit ทีนี้ เวลาที่คนทำ มันจะมีจังหวะหน่วงเวลา ก่อนที่ปุ่มจะเปลี่ยนสถานะเป็น Enable เราจึงรู้สึกว่ามันต่อเนื่องไปได้

แต่พอคอมพิวเตอร์ทำ มันจะไวกว่าเราทำแน่นอน ฉะนั้นอาจจะมีอาการที่กดปุ่มไวเกินไป ฉะนั้น ต้องไม่ลืมที่จะรอให้ปุ่มมีสถานะเป็น Enable ก่อน แล้วค่อยสั่งกดปุ่ม

ตัวอย่างต่อมา HTML Select Element มันพิเศษมาก จะมีคำสั่งแยกเฉพาะสำหรับ HTML Select Element โดยเฉพาะ ต้องใช้ให้ถูกแต่ถ้าไปใช้ พวก Custom Element อันนี้ก็ต้องดูเป็นตัว ๆ ไป

ดูก่อน Promise ทั้งหลาย

เนื่องจาก คำสั่งแทบจะทั้งหมดของ Selenium จะเป็น Promise ฉะนั้นถ้าไม่ใช้ async/await ช่วย Code ที่ออกมาจะเละ และอ่านยากมาก

Selenium Click VS. JavaScript Click

ในบางครั้ง หรืออาจจะหลาย ๆ ครั้ง จะมีเหตุการที่ Selenium Click ไม่โดน Element ที่เราต้องการ แบบงง ๆ หาสาเหตุไม่เจอ ก็อย่าไปฝืน เปลี่ยนมาใช้ JavaScript Click แทน

แต่ละ Device มีความเร็วไม่เท่ากัน

พยายามใช้ wait + until เข้าไว้ แล้วชีวิตจะดี

และอย่าประมาทว่าถ้าเทสบนเครื่องนี้ผ่านแล้ว จะผ่านแน่ ๆ บนเครื่องอื่น จะเจออะไรแปลก ๆ เสมอ

ความเร็วและความเสถียรของ Internet จะช่วยให้รันเทสผ่าน

ถ้าเราสั่งเทสจากเครื่องเราเอง แล้ว Target อยู่ที่อื่น โปรดให้ความสำคัญกับ ความเร็วและความเสถียรของ Internet ด้วย

Device Farm บางทีก็จ้องจะเล่นคุณ

โดย Concept แล้ว Device Farm มันดีมาก ๆ แต่เท่าที่เจอมา มันจะมีอะไรแปลก ๆ เกิดขึ้นเสมอ เช่นรันเทสไปซักพัก มี ad โผลมาขวางเฉยเลย ติดต่อ Support ไปก็ง่าวมาก ฉะนั้น ก็จะต้องเผื่อใจตรงนี้ไว้ด้วย

--

--

No responses yet