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

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

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

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

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

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

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

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

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

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

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

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

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