¿Cómo realizar la función de pasar el mouse en Selenium WebDriver usando Java?
Quiero hacer la función de pasar el mouse sobre un menú desplegable. Cuando pasemos el cursor sobre el menú, se mostrarán las nuevas opciones. Intenté hacer clic en las nuevas opciones usando xpath. Pero no puedo hacer clic en los menús directamente. Entonces, de forma manual, intento pasar el cursor sobre el menú desplegable y luego hago 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();
Realmente no es posible realizar una acción de "desplazar el mouse", sino que necesita encadenar todas las acciones que desea lograr de una sola vez. Así que muévete al elemento que revela los demás, luego, durante la misma cadena, muévete al elemento ahora revelado y haz clic en él.
Al utilizar cadenas de acción, debes 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:
- Pase el cursor sobre un elemento del menú.
- Encuentre el elemento oculto que SOLO está disponible después de pasar el cursor.
- 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 poder encontrarlo, 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 desplazarme y el clic estándar de WebDriver, podía desplazarme y luego hacer clic.