Solo veo esto en Chrome.
El mensaje de error completo dice:
"org.openqa.selenium.WebDriverException: No se puede hacer clic en el elemento en el punto (411, 675). Otro elemento recibiría el clic: ..."
El elemento que 'recibiría el clic' está al lado del elemento en cuestión, no encima y no se superpone, no se mueve por la página.
He intentado agregar un desplazamiento, pero eso tampoco funciona. El elemento se encuentra en la ventana mostrada sin necesidad de desplazarse.
google-chrome
selenium
selenium-webdriver
automated-tests
usuario1591169
fuente
fuente
Respuestas:
Esto es causado por los siguientes 3 tipos:
1. El elemento no es visible para hacer clic.
Use Actions o JavascriptExecutor para hacer clic.
Por acciones:
Por JavascriptExecutor:
o
Luego haga clic en el elemento.
2. La página se actualiza antes de hacer clic en el elemento.
Para esto, haga que la página espere unos segundos.
3. Se puede hacer clic en el elemento, pero hay una rueda giratoria / superposición encima
El siguiente código esperará hasta que desaparezca la superposición
Luego haga clic en el elemento.
fuente
También puede usar el clic de JavaScript y no sería necesario desplazarse en ese momento.
fuente
actions.MoveToElement
no funcionó para mí en C # y las otras soluciones de desplazamiento parecían un poco frágiles, ya que existía la posibilidad de que el desplazamiento no pudiera ver correctamente el elemento o que la posición del elemento en la página pudiera cambiar.Parece que hay un error en chromedriver para eso (el problema es que está marcado como no se solucionará) -> Enlace GitHub
(¿ Hacer una recompensa por FreedomSponsors quizás?)
Hay una solución alternativa sugerida en el comentario # 27. Tal vez funcione para ti
fuente
Tuve el mismo problema, probé todas las soluciones ofrecidas pero no funcionaron para mí. finalmente usé esto:
Espero que esto ayude
fuente
He visto esto en la situación en que la ventana de Chrome impulsada por el selenio se abrió demasiado pequeña. El elemento en el que se hizo clic estaba fuera de la ventana gráfica y, por lo tanto, estaba fallando.
Eso suena lógico ... el usuario real tendría que cambiar el tamaño de la ventana o desplazarse para que sea posible ver el elemento y, de hecho, hacer clic en él.
Después de indicarle al controlador de selenio que establezca el tamaño de la ventana de manera adecuada, este problema desapareció. La API del controlador web se describe aquí .
fuente
Wow, muchas respuestas aquí, y muchas buenas.
Espero agregar algo a esto desde mi experiencia.
Bueno chicos, en mi caso había una superposición de cookies que ocultaba el elemento ocasionalmente. Desplazarse al elemento también funciona; pero en mi humilde opinión (para mi caso, no es una panacea para todos) la solución más simple es ir a pantalla completa (estaba ejecutando mis scripts en 3/4 de la ventana de la pantalla). Así que, aquí vamos:
¡Espero que ayude!
fuente
rubí / watir-webdriver / cromo
Uso el siguiente truco y parece que funciona:
fuente
Yo también luché con este problema. El código funciona bien en FF, falla en Chrome. Lo que intentaba hacer era hacer clic en una casilla de verificación; si no estaba a la vista, me desplazaría para ver y luego hacer clic. Incluso desplazarse a la vista funciona en Chrome, solo los pocos píxeles inferiores de la casilla de verificación no estaban visibles, por lo que el controlador web se negó a hacer clic en él.
Mi solución es esta:
Chrome también tiene problemas con sendKeys, a veces es necesario usar Actions. Obviamente, necesita saber en qué dirección y cuánto debe ir para que su kilometraje pueda variar. Pero prefiero esto al hack de JavaScript, así que lo publico aquí en caso de que alguien más lo encuentre útil.
fuente
Recibí este error al ejecutar pruebas sin cabeza con xvfb-run. Estaban trabajando perfectamente a nivel local. Utilizando Chrome, las versiones de webdriver / chromedriver / chrome / java, etc. son todas idénticas.
El error 'no solucionará' en chromedriver: GitHub Link, señalado por Tony Lâmpada, sugirió que esto puede estar relacionado con lo que es / no es visible en la pantalla.
El mensaje de ayuda para xvfb-run muestra lo siguiente:
Cambiar la resolución para xvfb hizo que el error desapareciera:
fuente
Cuando uso el transportador esto me ayudó:
fuente
Primero, intente obtener el último controlador de Chrome y verifique si resuelve el problema.
En mi caso, no solucionó el problema. Pero, la siguiente solución funcionó para mí hasta ahora. El siguiente es el código C # pero puede seguir la misma lógica en su idioma específico. Lo que hacemos aquí es
Paso 1: concéntrate en el elemento usando el objeto Selenium Actions,
Paso 2: luego haz clic en el elemento
Paso 3: Si hay una excepción, activamos un evento "Click" de JavaScript en el elemento ejecutando el script javascript a través del método "ExecuteScript" del controlador del navegador Selenium.
También puede omitir los pasos 1 y 2 e intentar solo el paso 3 también. El paso 3 funcionaría solo, pero noté un comportamiento extraño en un escenario en el que el paso 3, aunque hizo clic con éxito en el elemento, causó un comportamiento inesperado en otras partes de mi código después de hacer clic en el elemento.
fuente
Hice este método basado en un comentario de la respuesta de Tony Lâmpada. Funciona muy bien.
fuente
Estaba teniendo el mismo problema al ejecutar el script de selenio en Python. Esto es lo que solía hacer clic en el elemento:
fuente
Estaba enfrentando un problema similar cuando tengo que marcar dos casillas de verificación una tras otra. Pero estaba obteniendo el mismo error anterior. Desde entonces agregué esperar entre mis pasos para marcar las casillas de verificación ... funciona bien y muy bien. Aquí están los pasos: -
fuente
Debe usar el foco o desplazarse por ese elemento. También es posible que deba usar la espera explícita.
O
No se puede hacer clic en el elemento debido a un Spinner / Overlay encima:
O
O
Si todavía no funciona, use
JavascriptExecutor
fuente
Aparentemente, este es el resultado de un error "No se solucionará" en el binario del controlador de Chrome.
Una solución que funcionó para mí (Nuestro kilometraje puede variar) se puede encontrar en esta discusión del Grupo de Google, Comentario # 3:
https://groups.google.com/forum/?fromgroups=#!topic/selenium-developer-activity/DsZ5wFN52tc
La porción relevante está aquí:
En mi caso, estoy usando Python, así que una vez que obtuve el elemento deseado, simplemente usé
Sin embargo, esperaría que esto solo funcione si el elemento en el que está intentando hacer clic es un enlace ...
fuente
Estaba enfrentando el mismo problema con clj-webdriver (puerto clojure de Selenium). Acabo de traducir la solución anterior a clojure por conveniencia. Puede llamar a esta función antes de hacer clic o lo que sea para evitar ese problema.
fuente
Esto podría suceder si el elemento cambia de posición mientras el controlador intenta hacer clic en él (también lo he visto con IE). El controlador retiene la posición inicial, pero cuando llega a hacer clic en él, esa posición ya no apunta a ese elemento. El controlador FireFox no tiene este problema BTW, aparentemente "hace clic" en los elementos mediante programación.
De todos modos, esto puede suceder cuando usa animaciones o simplemente cambia la altura de los elementos dinámicamente (por ejemplo
$("#foo").height(500)
). Debe asegurarse de que solo hace clic en los elementos después de que su altura se haya "establecido". Terminé con un código que se ve así (enlaces de C #):En el caso de una animación o cualquier otro factor que no pueda consultar fácilmente, puede utilizar un método "genérico" que espere a que el elemento sea estacionario:
fuente
Lo conocí porque una cubierta de diálogo de carga en este elemento. Simplemente lo resuelvo agregando una espera antes de trabajar con este elemento.
¡Espero que esto ayude!
fuente
Explicación del mensaje de error :
El mensaje de error simplemente dice que el elemento en el que desea hacer clic está presente, pero no está visible. Podría estar cubierto por algo o temporal no visible.
Podría haber muchas razones por las cuales el elemento no es visible en el momento de la prueba. Vuelva a analizar su página y encuentre la solución adecuada para su caso.
Solución para caso particular :
En mi caso, este error se produce cuando una información sobre herramientas del elemento de pantalla en el que hice clic aparecía sobre el elemento en el que quería hacer clic a continuación. Desenfocar fue una solución que necesitaba.
element.blur()
al elemento que muestra la información sobre herramientas, lo que haría que la información sobre herramientas desapareciera.fuente
La razón de este error es que el elemento en el que está intentando hacer clic no está en la ventana gráfica (región vista por el usuario) del navegador. Entonces, la forma de superar esto es desplazarse primero al elemento deseado y luego realizar el clic.
Javascript:
Java:
fuente
Re la respuesta de Tony Lâmpada, el comentario # 27 realmente resolvió el problema para mí, excepto que proporcionó código Java y necesitaba Python. Aquí hay una función de Python que se desplaza a la posición del elemento y luego hace clic en ella.
Esto resolvió el problema para mí en Chrome 34.0. No causó ningún daño en Firefox 28.0 e IE 11; esos navegadores no están sujetos al problema, pero desplazarse a la posición del elemento antes de hacer clic todavía no es algo malo.
fuente
Tal vez no sea una solución realmente limpia, pero funciona:
fuente
Estaba recibiendo este error porque probé un elemento emergente y luego tuve que hacer clic en el enlace debajo de la información sobre herramientas. La solución fue agregar
page.find('.sp-logo').hover
antesclick_link
para quitar la información sobre herramientas.fuente
Es curioso, todo el tiempo que pasé mirando las diversas respuestas, nadie había intentado lo obvio, que por supuesto, yo tampoco. Si su página tiene la misma identificación utilizada varias veces, como la mía, ("newButton",) y la que desea no es la primera encontrada, entonces es muy probable que obtenga este error. Lo más fácil de hacer (C #):
Tenga en cuenta que es FindElements, no FindElement.
Y luego pruebe para ver cuántos resultados regresaron de la recuperación. Si es el segundo, puede usar:
O consiga los identificadores reutilizados para repararlos.
fuente
.First(x => x.Visible)
a la llamada FindElements) y hacer clic en eso si no es nulo.Después de probar todas las sugerencias mencionadas, nada funcionó. Hice este código. Funciona pero no es hermoso.
fuente
Hago una especie de fuerza bruta de clics y me funciona.
fuente
Si ha
jQuery
cargado en la página, puede ejecutar el siguiente comando de JavaScript:Ejemplo usando el ejecutor de python:
fuente
Tuve el mismo problema y fue causado por un conflicto de identificación entre el div y el enlace dentro del div. Entonces el controlador estaba haciendo clic en el div en lugar del enlace que quería. Cambié la identificación div y funcionó correctamente.
Antes de:
Después:
fuente
En Drupal cuando se usa selenio :
fuente