Проблемы с нажатием

Ошибка «Элемент не кликабельен»

Щелчок ChromeDriver работает путем имитации щелчка мыши в середине первого клиентского прямоугольника элемента (или ограничивающего клиентского прямоугольника, если у него нет первого клиентского прямоугольника). Самый простой способ узнать, где ChromeDriver пытается щелкнуть, — это открыть инструменты разработчика Chrome и проверить элемент, по которому нужно щелкнуть, прямо перед вызовом операции щелчка. Выберите элемент в инспекторе и обратите внимание на синие прямоугольники, представляющие клиентские прямоугольники элемента, как показано ниже. ChromeDriver попытается щелкнуть середину первого.

Если ChromeDriver выдает ошибку «Элемент не доступен для клика», скорее всего, это связано с тем, что пользователь на самом деле не может щелкнуть это место. Чтобы проверить, поместите курсор в середину первого прямоугольника клиента и посмотрите, можно ли кликнуть по этому месту.

В приведенном выше случае тест пытался щелкнуть элемент привязки. В этом случае якорь неактивен; есть только дочернее изображение. Из-за стиля margin-bottom элемента изображения середина элемента привязки выходит за пределы кликабельного изображения, и поэтому ChromeDriver выдает ошибку. Дополнительную информацию о том, как определяется позиционирование/размер, см. в спецификации w3. Чтобы исправить описанную выше ситуацию, щелкните изображение вместо якоря.

Ошибка «Элемент не доступен для клика» часто возникает в следующих ситуациях, когда тест пытается:

  • щелкните якорь, кликабельные элементы-потомки которого находятся за пределами границ якоря (как указано выше)
  • щелкните элемент полностью или частично под другим элементом
  • щелкните элемент за кадром, когда присутствует фиксированное наложение (элемент будет прокручиваться в поле зрения, но его можно прокручивать под фиксированным наложением)
  • щелкните элемент, который не доступен для клика в середине (например, некоторые типы выпуклых элементов SVG)

Эти проблемы часто можно решить, щелкнув дочерний элемент данного элемента, программно удалив или скрыв блокирующий элемент, используя API расширенных взаимодействий для щелчка по смещению от верхнего левого угла элемента или имитируя мышь. событие щелчка в JavaScript.

Ошибка «Элемент не кликабельен»

Скорее всего, это происходит потому, что местоположение элемента изменилось через некоторое время после того, как ChromeDriver определил местоположение элемента, но до того, как ChromeDriver фактически выполнит щелчок по этому местоположению.

Чтобы определить, является ли это вашей проблемой, перехватите исключение из-за щелчка и немедленно запишите текущее местоположение и размер элемента. Сравните это с местом, о котором ChromeDriver сообщает, что он пытался щелкнуть исключение, и посмотрите, отличаются ли они. Если это так, вам нужно дождаться, пока элемент перестанет двигаться, или попытаться нажать еще раз. Если нет, сообщите об ошибке на небольшой тестовой странице, которую можно использовать для воспроизведения вашей проблемы (даже если она вызывает проблему лишь изредка).

ChromeDriver не может щелкнуть движущийся элемент

Эта функция не поддерживается ChromeDriver. Если элемент в конечном итоге остановится, подождите, пока это произойдет. Если элемент никогда не перестает двигаться, ChromeDriver не гарантирует, что щелчок будет успешным.