Quiero hacer la función mouseover sobre un menú desplegable. Cuando pasemos el mouse sobre el menú, mostrará las nuevas opciones. Traté de hacer clic en las nuevas opciones usando xpath. Pero no puede hacer clic en los menús directamente. Entonces, como forma manual, estoy tratando de pasar el mouse sobre el menú desplegable y luego haré clic en las nuevas opciones.
Actions action = new Actions(webdriver);
WebElement we = webdriver.findElement(By.xpath("//html/body/div[13]/ul/li[4]/a"));
action.moveToElement(we).build().perform();
java
selenium
selenium-webdriver
mouseover
Pradeep SJ
fuente
fuente
Respuestas:
No es realmente posible realizar una acción de 'desplazamiento del mouse', sino que debes encadenar todas las acciones que deseas lograr de una vez. Así que muévase al elemento que revela a los demás, luego, durante la misma cadena, muévase al elemento ahora revelado y haga clic en él.
Al usar Action Chains, debe recordar 'hacerlo como lo haría un usuario'.
fuente
webdriver.findElement(By... something)
se ejecutan antes que nada (esa es la única forma en que se puede transmitir su resultadomoveElement
). En ese momento, el segundo elemento que desea encontrar aún no es visible porque aún debe pasar el primero. Para solucionar esto, como dijiste, puedes insertar.perform()
s intermedios . Luego, para el segundofindElement
, se habráperform
editado el primer elemento emergente . La solución dada podría funcionar, dependiendo de la implementación de la página, pero aparentemente tu y mi kilometraje variaron.Ninguna de estas respuestas funciona cuando se intenta hacer lo siguiente:
Si inserta un comando 'realizar' después del moveToElement, se mueve al elemento, y el elemento del submenú se muestra durante un breve período, pero eso no es un desplazamiento. El elemento oculto desaparece inmediatamente antes de que pueda encontrarse, lo que da como resultado una ElementNotFoundException. Intenté dos cosas:
Esto no funcionó para mí. Lo siguiente funcionó para mí:
Usando las Acciones para desplazar y el clic estándar de WebDriver, podría desplazar y luego hacer clic.
fuente
En base a esta publicación de blog, pude activar el desplazamiento utilizando el siguiente código con Selenium 2 Webdriver:
fuente
moveToElement
, ¡usa este! Codifico en C #, por lo que no es solo la forma de Java hacerlo.Example
arguments[0]
?executeScript()
, que es unwebElement
Este código funciona perfectamente bien:
Después de pasar el mouse, puede continuar para realizar la siguiente acción que desee sobre la información revelada
fuente
using OpenQA.Selenium.Interactions;
Mira este ejemplo de cómo podemos implementar esto.
Para obtener una respuesta detallada, consulte aquí: http://www.testautomationguru.com/selenium-webdriver-automating-hoverable-multilevel-dropdowns/
fuente
Encontré esta pregunta buscando una manera de hacer lo mismo para mis pruebas de Javascript, usando Protractor (una interfaz de JavaScript para Selenium).
Mi solución con transportador 1.2.0 y webdriver 2.1:
Esto también acepta un desplazamiento (lo estoy usando para hacer clic arriba y a la izquierda de un elemento :)
fuente
Programa de ejemplo para desplazar el mouse con Selenium java WebDriver:
fuente
Puedes probar:
Si tuvo un caso en el que la web tiene muchas categorías, use el primer método. Para el menú que desea, solo necesita el segundo método.
fuente