Selenium - 无法单击动态可见菜单

时间:2015-02-06 10:14:31

标签: selenium selenium-webdriver

我有一个 li 的菜单  (list)在鼠标悬停特定标签后启用的元素。

    driver.get("www.snapdeal.com");   Actions actions = new Actions(driver);
    actions.moveToElement(driver.findElement(By.id("loggedOutAccount"))).build().perform();
    //Wait for 5 Secs
   driver.findElement(By.className("accountLink")).click();// Here it's throwing Element not visible exception

此代码正在执行鼠标悬停,但无法单击“SignIn Link”链接。虽然手动检查元素是可见

DOM结构 -

<div id="loggedOutAccount" class="hd-rvmp-logout">
<a class="signIn" href="javascript:void(0);">
<i class="iconHeader accountUser"></i>
<label class="my-account-lang"> My Account</label>
<i class="mar_2_left right-downArrow breadcrumbArrow-down"></i>
</a>
<div class="sdNavDropWrapper accDetails" style="display: none; z-index: 999;">
<ul class="positionAbsolute pull-right">
<li class="customLoggedInState">
<div class="left triangle"></div>
<div class="right triangle"></div>
<div>
<a class="accountLink" href="javascript:void(0);">Click here to sign in ></a>
</div>
</li>
<li class="stop-event">
<li class="stop-event">
<li class="stop-event">
<li class="stop-event">
<li class="stop-event">
</ul>
</div>
</div>

1 个答案:

答案 0 :(得分:1)

请使用xpath作为以下两个元素:

driver.get("www.snapdeal.com");   
Actions actions = new Actions(driver);
actions.moveToElement(driver.findElement(By.xpath("yourxpathhere"))).build().perform();

driver.findElement(By.xpath("yourxpathhere")).click();

我认为class / Id重复其他元素也用于样式目的。所以Xpath最好找到独特的元素。