ปัญหาการคลิก

ข้อผิดพลาด "องค์ประกอบไม่สามารถคลิกได้"

การคลิกของ ChromeDriver ทำงานโดยการจำลองการคลิกเมาส์ที่ตรงกลางของจุดรับไคลเอ็นต์แรกขององค์ประกอบ (หรือการกำหนดไคลเอ็นต์ที่ล้อมรอบหากไม่มีการแก้ไขไคลเอ็นต์แรก) วิธีที่ง่ายที่สุดในการดูว่า ChromeDriver พยายามคลิกอยู่ที่ตำแหน่งใดคือการเปิดเครื่องมือสำหรับนักพัฒนาเว็บของ Chrome และตรวจสอบองค์ประกอบที่จะคลิกไปทางขวาก่อนที่จะเรียกใช้การดำเนินการคลิก เลือกองค์ประกอบในเครื่องมือตรวจสอบและสังเกตช่องสีน้ำเงินที่แสดงถึงไคลเอ็นต์สี่เหลี่ยมขององค์ประกอบดังที่แสดงในภาพด้านล่าง ChromeDriver จะพยายามคลิกตรงกลางของรายการแรก

หาก ChromeDriver แสดงข้อผิดพลาด "องค์ประกอบไม่สามารถคลิกได้" ก็น่าจะเป็นเพราะผู้ใช้ไม่สามารถคลิกตำแหน่งนั้นได้จริง หากต้องการทดสอบ ให้วางเคอร์เซอร์ไว้ตรงกลางของไคลเอ็นต์แรกให้ตัวเอง แล้วดูว่าตำแหน่งนั้นคลิกได้หรือไม่

ในกรณีข้างต้น การทดสอบพยายามคลิกองค์ประกอบ Anchor ในกรณีนี้ Anchor ไม่สามารถคลิกได้ มีเพียงรูปภาพย่อยเท่านั้น เนื่องจากรูปแบบ margin-bottom ในองค์ประกอบรูปภาพ ตรงกลางขององค์ประกอบ Anchor จะอยู่นอกขอบเขตรูปภาพที่คลิกได้ ChromeDriver จึงแสดงข้อผิดพลาด สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการกำหนดตำแหน่งหรือขนาด โปรดดูข้อกำหนด W3 หากต้องการแก้ไขกรณีด้านบน ให้คลิกรูปภาพแทน Anchor

ข้อผิดพลาด "องค์ประกอบไม่สามารถคลิกได้" มักเกิดขึ้นในสถานการณ์ต่อไปนี้เมื่อการทดสอบพยายามทำสิ่งต่อไปนี้

  • คลิก Anchor ที่มีองค์ประกอบองค์ประกอบสืบทอดที่คลิกได้ไม่ได้อยู่ในขอบเขตของ Anchor (ตามด้านบน)
  • คลิกองค์ประกอบทั้งหมดหรือบางส่วนภายใต้องค์ประกอบอื่น
  • คลิกองค์ประกอบที่อยู่นอกหน้าจอเมื่อมีการวางซ้อนคงที่ (ระบบจะเลื่อนองค์ประกอบดังกล่าวเข้ามาในมุมมอง แต่อาจเลื่อนองค์ประกอบนั้นไปใต้การวางซ้อนแบบคงที่)
  • คลิกองค์ประกอบที่ไม่สามารถคลิกได้ตรงกลาง (เช่น องค์ประกอบ SVG แบบนูนบางประเภท)

ปัญหาเหล่านี้มักจะแก้ไขได้โดยคลิกองค์ประกอบย่อยขององค์ประกอบที่ต้องการ โดยการนำองค์ประกอบการบล็อกออกหรือซ่อนองค์ประกอบโดยใช้โปรแกรม การใช้ API การโต้ตอบขั้นสูงเพื่อคลิกที่ออฟเซ็ตจากด้านบนซ้ายขององค์ประกอบ หรือโดยการจำลองเหตุการณ์คลิกเมาส์ใน JavaScript

ข้อผิดพลาด "องค์ประกอบไม่สามารถคลิกได้"

กรณีนี้อาจจะเกิดขึ้นได้เนื่องจากตำแหน่งขององค์ประกอบมีการเปลี่ยนแปลงในช่วงเวลาหนึ่งหลังจากที่ ChromeDriver ระบุตำแหน่งขององค์ประกอบ แต่ก่อนที่ ChromeDriver จะออกไปคลิกที่ตำแหน่งนั้นจริงๆ

ในการพิจารณาว่านี่เป็นปัญหาของคุณหรือไม่ ให้ยกเว้นการคลิกดังกล่าวและบันทึกตำแหน่งปัจจุบันและขนาดขององค์ประกอบทันที เปรียบเทียบกับตำแหน่งที่ ChromeDriver รายงานที่พยายามคลิกในข้อยกเว้นและดูว่าแตกต่างกันหรือไม่ หากเป็นเช่นนั้น คุณต้องรอให้องค์ประกอบ หยุดเคลื่อนที่หรือพยายามคลิกอีกครั้ง หากปัญหายังคงอยู่ ให้แจ้งข้อบกพร่องพร้อมหน้าทดสอบขนาดเล็กที่สามารถใช้ทำให้เกิดปัญหาซ้ำได้ (แม้ว่าปัญหาจะเกิดขึ้นเป็นครั้งคราวก็ตาม)

ChromeDriver ไม่สามารถคลิกองค์ประกอบที่เคลื่อนไหวได้

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