Saltar al contenido

¿Cómo realizar la función de mouseover en Selenium WebDriver usando Java?

Puede darse el caso de que halles alguna incompatibilidad en tu código o proyecto, recuerda probar siempre en un ambiente de testing antes subir el código al proyecto final.

Solución:

Realmente no es posible realizar una acción de “desplazamiento del mouse”, en su lugar, debe encadenar todas las acciones que desea lograr de una sola vez. 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 cadenas de acción, debe recordar “hacerlo como lo haría un usuario”.

Actions action = new Actions(webdriver);
WebElement we = webdriver.findElement(By.xpath("html/body/div[13]/ul/li[4]/a"));
action.moveToElement(we).moveToElement(webdriver.findElement(By.xpath("/expression-here"))).click().build().perform();

Ninguna de estas respuestas funciona cuando se intenta hacer lo siguiente:

  1. Coloca el cursor sobre un elemento del menú.
  2. Encuentre el elemento oculto que SOLO está disponible después del desplazamiento.
  3. Haga clic en el elemento del submenú.

Si inserta un comando ‘realizar’ después de 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 se pueda encontrar, lo que genera una excepción ElementNotFoundException. Intenté dos cosas:

Actions builder = new Actions(driver);
builder.moveToElement(hoverElement).perform();
builder.moveToElement(clickElement).click().perform();

Esto no funcionó para mí. Lo siguiente funcionó para mí:

Actions builder = new Actions(driver);
builder.moveToElement(hoverElement).perform();
By locator = By.id("clickElementID");
driver.click(locator);

Usando las Acciones para pasar el mouse y el clic estándar de WebDriver, podría pasar el mouse y luego hacer clic.

Según esta publicación de blog, pude activar el desplazamiento mediante el siguiente código con Selenium 2 Webdriver:

String javaScript = "var evObj = document.createEvent('MouseEvents');" +
                    "evObj.initMouseEvent("mouseover",true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);" +
                    "arguments[0].dispatchEvent(evObj);";


((JavascriptExecutor)driver).executeScript(javaScript, webElement);

Reseñas y valoraciones

No se te olvide dar recomendación a esta sección si te ayudó.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *