我有一个简单的CSS-based dropdown menu,我试图点击Java Selenium(WebDriver)测试中的一个菜单项。
菜单(<ul>
元素)和项目(<a>
)都有ID,创建相应的WebElement
对象的工作正常。我正在尝试使用以下代码点击其中一项:
hoverOver(transfersMenu);
transferLink.click();
在hoverOver()
,我尝试了all three answers from this question,但没有一个可以使用。我一直在说:
org.openqa.selenium.ElementNotVisibleException:
Element is not currently visible and so may not be interacted with
Command duration or timeout: 2.06 seconds
(我已经尝试在 transferLink.click()
之前调用hoverOver()
,希望隐式等待可以使其正常工作,但是没有。)
知道如何进行悬停工作以便点击链接吗?
Selenium 2.21.0版。我正在使用Firefox 13.0在Linux(Ubuntu)上运行测试。一位同事刚刚尝试使用Windows(使用Firefox 12.0),但它也不适用于他。
更新:根据Slanec的评论提示以及these instructions,我在setEnableNativeEvents(true)
上尝试了FirefoxProfile
。起初失败了:
org.openqa.selenium.InvalidElementStateException:
Cannot perform native interaction: Could not load native events component.
...但在升级到Selenium 2.23.1 之后,我不再收到投诉。
但是,悬停不起作用(打开或关闭本机事件)。 : - /
答案 0 :(得分:0)
我使用以下代码将鼠标悬停在菜单上1秒钟,然后点击链接,就像您正在使用的链接一样:
action = new SeleniumActionHelper(driver);
WebElement currentUser = findElementByLinkText("testing1");
action.mouseHover(currentUser);
Thread.sleep(1000);
值得注意的是,鼠标光标需要保留在浏览器窗口中以便悬停。如果鼠标光标在浏览器窗口之外,我会快速浏览菜单,但它不会保持可见
答案 1 :(得分:0)
试试这个例子:
WebElement menuHoverLink= driver.findElement(By.id("test"));
actions.moveToElement(menuHoverLink).perform();
driver.findElement(By.id("test")).click();
Thread.sleep(6000);
答案 2 :(得分:0)
你如何运行测试类?我发现通过ANT运行WebDriver使得悬停操作变得不可能,而从命令行(TestNG JAR)或从Eclipse运行测试类的工作正常。