Problemy z kliknięciami

Błąd „Element nie jest klikalny”

Klikanie ChromeDriver to symulacja kliknięcia myszą w środku pierwszego prostokąta klienta dla elementu (lub ograniczającego klienta prostokątnego, jeśli nie ma pierwszego prostokąta klienta). Najłatwiejszym sposobem na sprawdzenie, gdzie ChromeDriver próbuje kliknąć, jest otwarcie narzędzi deweloperskich w Chrome i sprawdzenie elementu, który ma zostać kliknięty, bezpośrednio przed wywołaniem operacji kliknięcia. Wybierz element w inspektorze i zwróć uwagę na niebieskie pola reprezentujące prostokątne elementy klienta, jak pokazano poniżej. ChromeDriver spróbuje kliknąć środek pierwszej grafiki.

Jeśli ChromeDriver zwraca błąd „Element nie jest klikalny”, najprawdopodobniej użytkownik nie klika lokalizacji. Aby przetestować, umieść kursor pośrodku pierwszego klienta i sprawdź, czy można kliknąć tę lokalizację.

W powyższym przypadku testem było kliknięcie kotwicy. W tym przypadku nie można kliknąć kotwicy, a tylko obraz podrzędny. Ze względu na styl margin-bottom w elemencie obrazu środek elementu kotwicy znajduje się poza granicami klikalnego obrazu i ChromeDriver zgłasza błąd. Więcej informacji na temat określania pozycji/rozmiaru znajdziesz w specyfikacji w3. Aby rozwiązać ten problem, kliknij obraz zamiast kotwicy.

Błąd „Element nie jest klikalny” często występuje w następujących sytuacjach, gdy test próbuje:

  • kliknięcie kotwicy, której klikalne elementy podrzędne nie mieszczą się w granicach zakotwiczenia (jak powyżej).
  • kliknąć element całkowicie lub częściowo pod innym elementem;
  • kliknąć element poza ekranem, gdy widoczna jest nakładka stała (element zostanie przewinięty, by był widoczny, ale można go przewinąć pod stałą nakładką);
  • kliknąć element, który nie jest klikalny w środku (np. niektóre typy wypukłych elementów SVG);

Te problemy często można rozwiązać, klikając element podrzędny danego elementu, automatycznie usuwając lub ukrywając blokujący element, używając interfejsu API interakcji zaawansowanych, klikając w miejscu przesunięcia względem lewego górnego rogu elementu, lub symulując zdarzenie kliknięcia myszy w języku JavaScript.

Błąd „Element nie jest klikalny”

Najprawdopodobniej wynika to z tego, że lokalizacja elementu zmieniła się jakiś czas po tym, jak funkcja ChromeDriver określiła lokalizację elementu, ale zanim ChromeDriver dokona kliknięcia w tej lokalizacji.

Aby określić, czy na tym polega Twój problem, przechwyć wyjątek z kliknięcia i od razu zapisz bieżącą lokalizację i rozmiar elementu. Porównaj ją z lokalizacją podaną przez ChromeDriver, którą próbował kliknąć w wyjątku, aby sprawdzić, czy są one inne. Jeśli tak, poczekaj, aż element przestanie się poruszać, lub kliknij ponownie. Jeśli nie, zgłoś błąd na małej stronie testowej, która może zostać użyta do odtworzenia problemu (nawet jeśli tylko sporadycznie powoduje wystąpienie problemu).

ChromeDriver nie może kliknąć ruchomego elementu

Ta funkcja nie jest obsługiwana przez ChromeDriver. Jeśli element w końcu się zatrzyma, poczekaj, aż to nastąpi. Jeśli element nie przestanie się poruszać, ChromeDriver nie gwarantuje pomyślnego kliknięcia.