Vấn đề về việc nhấp

Lỗi "Phần tử không thể nhấp được"

Thao tác nhấp trong ChromeDriver hoạt động bằng cách mô phỏng một thao tác nhấp chuột ở giữa hình chữ nhật ứng dụng đầu tiên của phần tử (hoặc giới hạn khuôn hình chữ nhật ứng dụng nếu không có hình chữ nhật ứng dụng đầu tiên). Cách dễ nhất để tìm ra vị trí ChromeDriver đang cố gắng nhấp là mở công cụ cho nhà phát triển của Chrome và kiểm tra phần tử cần nhấp vào ngay trước khi thao tác nhấp của bạn được gọi. Chọn phần tử trong công cụ kiểm tra và để ý(các) hộp màu xanh dương biểu thị khuôn khổ ứng dụng của phần tử, như minh hoạ dưới đây. ChromeDriver sẽ thử nhấp vào giữa phần đầu tiên.

Nếu ChromeDriver gặp lỗi "Phần tử không thể nhấp vào", thì khả năng cao nhất là do người dùng không thực sự nhấp vào được vị trí đó. Để kiểm tra, hãy đặt con trỏ vào giữa kích thước của ứng dụng khách đầu tiên và xem liệu vị trí đó có thể nhấp vào được hay không.

Trong trường hợp trên, kiểm thử đang cố gắng nhấp vào phần tử neo. Trong trường hợp này, neo không thể nhấp vào được; chỉ có hình ảnh con mới có thể nhấp vào. Do kiểu margin-bottom trên phần tử hình ảnh, phần giữa của phần tử neo nằm ngoài giới hạn hình ảnh có thể nhấp, và do đó, ChromeDriver sẽ gửi lỗi. Để biết thêm thông tin về cách xác định vị trí/kích thước, hãy xem thông số kỹ thuật w3. Để khắc phục trường hợp nêu trên, hãy nhấp vào hình ảnh thay vì nút neo.

Lỗi "Phần tử không thể nhấp được" thường xảy ra trong những trường hợp sau đây khi quy trình kiểm thử cố gắng:

  • nhấp vào liên kết có các phần tử con có thể nhấp không nằm trong giới hạn liên kết (như ở trên)
  • nhấp vào một phần tử hoặc toàn bộ hoặc một phần dưới một phần tử khác
  • nhấp vào một phần tử ngoài màn hình khi có lớp phủ cố định (phần tử sẽ được cuộn vào chế độ xem nhưng có thể cuộn dưới lớp phủ cố định)
  • nhấp vào một phần tử không thể nhấp được ở giữa (ví dụ: một số loại phần tử SVG lồi)

Các vấn đề này thường có thể được giải quyết bằng cách nhấp vào phần tử con của một phần tử nhất định, bằng cách lập trình để xoá hoặc ẩn phần tử chặn, sử dụng API tương tác nâng cao để nhấp vào một vị trí bù trừ phía trên cùng bên trái của phần tử hoặc bằng cách mô phỏng một sự kiện nhấp chuột trong javascript.

Lỗi "Phần tử không thể nhấp được"

Điều này rất có thể xảy ra do vị trí của phần tử đã thay đổi một thời gian sau khi ChromeDriver xác định vị trí của phần tử nhưng trước khi ChromeDriver thực sự đưa ra một lượt nhấp tại vị trí đó.

Để xác định xem đây có phải là vấn đề của bạn hay không, hãy phát hiện ngoại lệ từ lượt nhấp và ghi lại ngay vị trí cũng như kích thước hiện tại của phần tử. So sánh vị trí đó với vị trí mà ChromeDriver báo cáo rằng trình duyệt này đã cố nhấp vào trường hợp ngoại lệ và xem chúng có khác nhau không. Nếu vậy, bạn cần đợi phần tử ngừng di chuyển hoặc thử nhấp lại. Nếu không, hãy báo cáo lỗi với một trang thử nghiệm nhỏ có thể được dùng để tái hiện vấn đề của bạn (ngay cả khi lỗi đó chỉ thỉnh thoảng kích hoạt sự cố).

ChromeDriver không thể nhấp vào một phần tử đang chuyển động

Đây không phải là tính năng được ChromeDriver hỗ trợ. Nếu phần tử dừng lại, hãy đợi điều đó xảy ra. Nếu phần tử không ngừng di chuyển, ChromeDriver không đảm bảo lượt nhấp sẽ thành công.