提问者:小点点

如何在Firefox 19中使用Selenium WebDriver进行鼠标悬停?


我用过硒2.31。

我使用Actions类来移动鼠标。我用它将鼠标移到一个菜单上,它的子菜单只出现了几分之一秒,不像旧版本的Firefox。

由于此问题,我无法使用drive. findElement选择子菜单,因为它会引发异常“元素无法滚动到视图中”。

有什么解决方案吗?


共3个答案

匿名用户

对于actions对象,您应该首先移动菜单标题,然后移动到弹出菜单项并单击它。不要忘记在最后调用< code>actions.perform()。下面是一些示例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();

匿名用户

另一种方法是使用Selenium的JavaScript执行器来强制显示元素的样式。

这方面的一个例子是沿着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(); 

从那里,您可以找到元素的XPath,并使用selenium单击元素。您也可以级联它来查找主要元素的子元素

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

请注意,只有当悬停在一个悬停元素上时,该元素才会改变显示样式。

匿名用户

试试这个代码…这是c清晰的代码…

//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();