动作链 - 无法选择子菜单

时间:2014-02-14 17:05:38

标签: java selenium automation selenium-webdriver

也许有人可以帮我解决这个问题。我希望能够使用java和Selenium webdriver创建一系列Actions。以下是网页的来源:

<li id="menu-item-14" class="menu-item menu-item-type-post_type menu-item-object-page   current-menu-item page_item page-item-5 current_page_item menu-item-has-children menu-item-14"><a href="http://www.somewebsite.com/about/">About</a>
<ul class="sub-menu" style="display: none; visibility: hidden;">
    <li id="menu-item-43" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-43"><a href="http://www.somewebsite.com/team/">Team</a></li>
</ul>
</li>

基本上当您将鼠标悬停在“关于”菜单上时,将出现一个子菜单名称“团队”,我希望能够选择子菜单。 这就是我的代码看起来像

WebElement aboutMenu = _driver.findElement(By.id("menu-item-14"));
Actions builder = new Actions(_driver);
Action seriesofactions = builder
.moveToElement(aboutMenu)
.moveToElement(_driver.findElement(By.id("menu-item-43")))
.click()
.build();
seriesofactions.perform();

如果我采用第二个moveToElement代码就可以了。任何想法将不胜感激?

更新:使用的Java代码

WebElement menuHoverLink = _driver.findElement(By.id("menu-item-14"));
        actions.moveToElement(menuHoverLink).perform();
try {
            ((JavascriptExecutor)    _driver).executeScript("document.getElementByid('menu-item-14')).style.display='block'");
        } catch (Exception e) {
e.printStackTrace(); 
}
_driver.findElement(By.id("menu-item-43")).click();

1 个答案:

答案 0 :(得分:2)

当您将鼠标悬停在菜单项-14上时,ul class =“sub-menu”上的样式将更改为style =“display:block;并且可能会删除样式元素的可见性。然后允许菜单项-43出现以供选择。

有关在硒中使用鼠标悬停的更多信息,请参阅此文章。

How to do mouse hover using Selenium WebDriver in Firefox 19?