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

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

Thao tác nhấp vào ChromeDriver hoạt động bằng cách mô phỏng thao tác nhấp chuột vào giữa kích cỡ khuôn hình chữ nhật máy khách đầu tiên của phần tử (hoặc giới hạn hình chữ nhật máy khách nếu không có kích cỡ khuôn hình chữ nhật máy khách đầu tiên). Cách dễ nhất để tìm ra nơi ChromeDriver đang cố nhấp vào 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 ngay trước khi thao tác nhấp của bạn được gọi. Chọn phần tử trong trình kiểm tra và nhận thấy(các) hộp màu xanh dương đại diện cho các kích cỡ khuôn hình chữ nhật ứng dụng của phần tử, như trong hình dưới đây. ChromeDriver sẽ cố gắng nhấp vào giữa tệp đầu tiên.

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

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

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

  • Nhấp vào một neo có các phần tử con có thể nhấp vào 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ử toàn bộ hoặc một phần bê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 bên dưới lớp phủ cố định)
  • Nhấp vào một phần tử không nhấp vào được ở giữa (ví dụ: một số loại phần tử SVG lồi)

Bạn thường có thể giải quyết các vấn đề này bằng cách nhấp vào phần tử con của phần tử nhất định, xoá hoặc ẩn phần tử chặn theo phương thức lập trình, 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 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 khoảng thời gian sau khi ChromeDriver xác định được vị trí của phần tử nhưng trước khi ChromeDriver thực sự thực hiện thao tác nhấp chuột 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 trường hợp 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 mà đã cố nhấp vào trong 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 phải chờ phần tử dừng di chuyển hoặc cố gắng nhấp lại. Nếu không, hãy báo cáo lỗi bằng một trang thử nghiệm nhỏ có thể dùng để tái hiện vấn đề của bạn (ngay cả khi chỉ thỉnh thoảng kích hoạt vấn đề).

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

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