2014-11-22 161 views
0

我可以遍历菜单项,但最终的元素没有被WebDriver点击。Selenium Webdriver无法点击子菜单项

我的代码片段:

WebElement hover0 = driver.findElement(By.id("td_Menu_0")); 
WebElement hover = driver.findElement(By.xpath(".//*[@id='role6_Maintain']/table/tbody/tr/td[1]")); 
action.moveToElement(hover0).moveToElement(hover); 
action.moveToElement(driver.findElement(By.cssSelector("#menuClickable_0_6_0_0"))) 
     .click().build().perform(); 

最终WebElement HTML:

<td onkeydown="return menuClickableOperation(this,event);" 
    onclick="javascript:deleteGrpWindowNode('menu_Maintain',0,'br_w_BusissPartner','BRGUI','Business Partner','','','HJHF');" 
    onmouseout="menuDeSelect(this);" onmouseover="menuSelect(this)" 
    onmousemove="DisplayIFrame();" tabindex="11" id="menuClickable_0_6_0_0" 
    class="menuNormal2"> 
    <table width="100%"> 
    <tbody> 
     <tr> 
     <td width="100%" style=""> 
      <p title="Business Partner" class="MenuTxt">Business Partner</p> 
     </td> 
     </tr> 
    </tbody> 
    </table> 
</td> 

回答

0

试试这个代码,而不是:

action.moveToElement(hover0).build().perform(); 
action.moveToElement(hover).build().perform(); 
new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("#menuClickable_0_6_0_0")));//Waiting for 20 seconds for the final element to be visible. 
action.moveToElement(driver.findElement(By.xpath("//td[@id='menuClickable_0_6_0_0']//p[.='Business Partner']"))).click().build().perform(); 

+0

硒不抛出任何异常,但该元素不点击,甚至没有选择 – 2014-11-22 07:51:08

+0

哪一个是悬停在的菜单? **“hover0”或**“hover”** – Subh 2014-11-22 08:27:55

+0

首先悬停在“hover0”上,使元素“悬停”可见,然后在鼠标悬停时“悬停”元素“menuClickable_0_6_0_0”变得可见 – 2014-11-22 08:35:30

0

因为你已经徘徊在hover0和徘徊,我很好ping第三个对象可用。 那么,为什么不能在执行第三对象上直接点击喜欢

driver.findElement(By.xpath("//td[@id='menuClickable_0_6_0_0']//p[.='Business Partner']").click 

在你途中的另一种方式是像

action.click(yourElement).build().perform() 
+0

第三个元素只有几分之一秒可见,在这短时间内,Web驱动程序无法单击元素 – 2014-11-26 09:47:19