java selenium-webdriver mousehover

java - ¿Cómo hacer el hover del mouse con Selenium WebDriver en Firefox 19?



selenium-webdriver mousehover (6)

Con el objeto de acciones, primero debe mover el título del menú, y luego pasar al elemento del menú emergente y hacer clic en él. No olvides llamar a actions.perform() al final. Aquí hay algunos ejemplos de código Java:

Actions actions = new Actions(driver); WebElement menuHoverLink = driver.findElement(By.linkText("Menu heading")); actions.moveToElement(menuHoverLink); WebElement subLink = driver.findElement(By.cssSelector("#headerMenu .subLink")); actions.moveToElement(subLink); actions.click(); actions.perform();

He usado el selenio 2.31.

He utilizado la clase de Acciones para el movimiento del ratón. Usando esto, moví el mouse sobre un menú y su submenú apareció solo por una fracción de segundo a diferencia de la versión anterior de Firefox.

Debido a este problema, no puedo seleccionar el submenú usando driver.findElement ya que arroja una excepción "el elemento no se puede desplazar a la vista".

¿Hay alguna solución para esto?


Esta respuesta ayudó a resolver mi problema.

Mi desafío fue encontrar un enlace en una opción de menú. El enlace no estaba visible hasta que me coloqué sobre el Menú.

Esta parte crucial para mí fue descubrir que además de desplazarme por el menú, a continuación tuve que desplazarme por el enlace para interactuar con él.


Esto será útil si está utilizando Ruby.

1. Primero debes encontrar el elemento por xpath o id.

2. Luego use el método action.move_to (). Perform.

Aquí está el código:

hover = WAIT.until{$driver.find_element(:xpath,"xpath")} driver.action.move_to(hover).perform


Intente este código ... Es un código nítido ...

//Webelement is the main menu Link webElement = driver.FindElement(By.XPath("Your element xpath")); Actions act = new Actions(driver); act.MoveToElement(webElement).Perform();//This opens menu list System.Threading.Thread.Sleep(5000);//This line will help you to hold menu //This web element is the sub menu which is under main menu webElement = driver.FindElement(By.XPath("Sub menu path")); act.MoveToElement(webElement).Perform();//This opens menu list System.Threading.Thread.Sleep(5000);//Holds menu //This web element is the option you have to click webElement = driver.FindElement(By.XPath("Path")); webElement.Click();


Otra forma de hacer esto es usar el Ejecutor de JavaScript de Selenium para forzar el estilo del elemento a mostrar.

Un ejemplo de esto estaría en esta línea en C #

//Use the Browser to change the display of the element to be shown (IJavaScriptExecutor)driver).ExecuteScript("document.getElementById(''myId'').stlye.display="block"); //navigate to your link that is now viewable driver.FindElement(By.Xpath(''//LinkPath'')).Click();

Desde allí, puede encontrar el XPath para su elemento y usar selenio para hacer clic en el elemento. Puedes hacer una cascada para encontrar a los hijos de tu elemento principal también.

//(IJavaScriptExecutor)ffbrowser).ExecuteScript("document.getElementById(''myId'').children[1].children[1].style.display=''block''");

Tenga en cuenta que esto solo es posible si tiene un elemento de desplazamiento que cambia el estilo de visualización cuando se desplaza sobre él.


List<WebElement> list = driver.findElements(By.xpath("//a")); for (int i=0;i<list.size();i++){ if(list.get(i).getText().equalsIgnoreCase("cacique intimates M")) { new Actions(driver).moveToElement(list.get(i)).click().build().perform(); System.out.println("Clicked on Parent Category"); new Actions(driver).moveToElement(list.get(i)).moveToElement(driver.findElement(By.linkText("SPECIALTY BRAS"))).click().build().perform(); break; } }