Problèmes de clic

Erreur "Élément non cliquable"

Le clic dans ChromeDriver consiste à simuler un clic de souris au milieu du premier rectangle du client de l'élément (ou du premier rectangle du client de délimitation). Le moyen le plus simple de savoir où ChromeDriver tente de cliquer est d'ouvrir les outils de développement Chrome et d'inspecter l'élément sur lequel cliquer juste avant l'appel de l'opération de clic. Sélectionnez l'élément dans l'outil d'inspection et notez les cases bleues représentant les rectangles du client de l'élément, comme illustré ci-dessous. ChromeDriver tentera de cliquer au milieu de la première.

Si ChromeDriver génère l'erreur "L'élément n'est pas cliquable", cela est probablement dû au fait que l'utilisateur ne peut pas cliquer sur cet emplacement. Pour effectuer un test, placez votre curseur au milieu du premier rectangle du client et vérifiez si cet emplacement est cliquable.

Dans le cas ci-dessus, le test tentait de cliquer sur l'élément d'ancrage. Dans ce cas, l'ancre n'est pas cliquable. Seule l'image enfant l'est. En raison d'un style margin-bottom sur l'élément image, le milieu de l'élément d'ancrage se situe en dehors des limites de l'image cliquable, et ChromeDriver génère donc une erreur. Pour en savoir plus sur la détermination du positionnement/de la taille, consultez les spécifications w3. Pour résoudre le cas ci-dessus, cliquez sur l'image au lieu de l'ancre.

L'erreur "Élément non cliquable" se produit souvent dans les situations suivantes, lorsqu'un test tente de:

  • cliquer sur une ancre dont les éléments cliquables ne se trouvent pas dans ses limites descendantes (comme ci-dessus) ;
  • cliquer entièrement ou partiellement sur un élément sous un autre élément ;
  • cliquer sur un élément hors de l'écran lorsqu'une superposition fixe est présente (l'élément s'affiche à l'écran, mais il est possible de le faire défiler sous la superposition fixe) ;
  • cliquer sur un élément qui n'est pas cliquable au milieu (par exemple, certains types d'éléments SVG convexes) ;

Ces problèmes peuvent souvent être résolus en cliquant sur un enfant de l'élément donné, en supprimant ou en masquant de manière programmatique l'élément bloquant, en utilisant l'API d'interactions avancées pour effectuer un clic avec un décalage par rapport à l'angle supérieur gauche de l'élément, ou en simulant un événement de clic de souris en JavaScript.

Erreur "Élément non cliquable"

Cela est probablement dû au fait que l'emplacement de l'élément a changé quelque temps après que ChromeDriver a déterminé son emplacement, mais avant que ChromeDriver n'enregistre réellement un clic à cet emplacement.

Pour déterminer s'il s'agit de votre problème, interceptez l'exception à partir du clic et consignez immédiatement l'emplacement et la taille actuels de l'élément. Comparez cela à l'emplacement signalé par ChromeDriver, où il a tenté de cliquer dans l'exception. Si tel est le cas, vous devez attendre que l'élément arrête de se déplacer ou essayer de cliquer à nouveau. Si ce n'est pas le cas, signalez un bug avec une petite page de test qui peut être utilisée pour reproduire votre problème (même si cela ne déclenche le problème qu'occasionnellement).

ChromeDriver ne parvient pas à cliquer sur un élément en mouvement

Cette fonctionnalité n'est pas compatible avec ChromeDriver. Si l'élément finit par s'arrêter, attendez que cela se produise. Si l'élément ne cesse de bouger, ChromeDriver ne garantit pas que le clic aboutira.