0

我想使用默认不可见的 selenium webdriver 单击子菜单项。它在 mousehover 上变得可见。我尝试了一些代码,它给出了如下所示的错误

Caused by: org.openqa.selenium.remote.ErrorHandler$UnknownServerException: Element is not currently visible and so may not be interacted with.

这里的代码:

    Actions actions = new Actions(driver); 
    WebElement menuHoverLink = driver.findElement(By.linkText("RENT")); 
    //WebElement menuHoverLink = driver.findElement(By.className("current")); 
    actions.moveToElement(menuHoverLink); 
    WebElement subLink = driver.findElement(By.cssSelector("a[href='nemc.com/rentals/easy-rent']")); 
    actions.moveToElement(subLink); 
    actions.click(); 
    actions.perform();    
4

4 回答 4

2

使用Actions类将鼠标悬停在您的菜单项上,然后单击子菜单选项。您可以参考 Actions 类来获得可用方法的概述,并在此处帮助您了解如何使用这些交互。

Actions actions = new Actions(driver); WebElement menuHoverLink = driver.findElement(By.linkText("RENT"));
actions.moveToElement(menuHoverLink).perform();
driver.findElement(By.cssSelector("a[href='nemc.com/rentals/easy-rent']")).click();

我希望你的 locatros 是正确的..你可能想使用 a[contains(@href,'nemc.com/rentals')'

于 2013-04-23T05:05:33.573 回答
0

我最近偶然发现了一个类似的问题,使用phantomJSghostdriver。就我而言,问题在于窗口大小 - HTML 元素位于可见区域之外,并且我的鼠标移动没有任何效果(默认大小为 400x300,相当小)。

您可以检查窗口大小

driver.manage().window().getSize()

你可以改变它

driver.manage().window().setSize(new Dimension(width, height));
于 2014-10-10T12:52:58.397 回答
0

在某些应用程序中,Action交互可能不起作用。我个人遇到了这个问题,然后我使用了以下解决方案。我从硒问题跟踪器页面中获取了这个解决方案。

 WebElement targetElement = driver.findElement(By.id("locator"));  
 JavascriptExecutor js = (JavascriptExecutor) driver;  
 String mouseOverScript = "if(document.createEvent){var evObj = document.createEvent('MouseEvents');evObj.initEvent('mouseover', true, false); arguments[0].dispatchEvent(evObj);} else if(document.createEventObject) { arguments[0].fireEvent('onmouseover');}";  
 js.executeScript(mouseOverScript, targetElement);  
 driver.findElement(By.id("Click locator")).click;
于 2013-04-24T06:19:47.520 回答
0

尝试使用下面的代码。它应该可以工作。尝试将 perform() 添加到 moveToElement 语句,如下所示。

Actions actions = new Actions(driver);
WebElement menuHoverLink = driver.findElement(By.linkText("RENT"));

actions.moveToElement(menuHoverLink).perform();
WebElement subLink = driver.findElement(By.cssSelector("a[href='nemc.com/rentals/easy-rent']"));
sublink.click();
于 2013-04-23T10:16:25.523 回答