2017-05-08 108 views
0

我是新來的selinum,在鼠標懸停期間(請求按鈕)兩個按鈕將顯示在屏幕上。如何在selenium Java中選擇隱藏的子菜單?

1.User Status button 
2. confirm user button 

在用戶狀態按鈕特定的JavaScript函數的點擊應該是觸發..

我嘗試下面的代碼,但它不工作。

WebElement subMenu = 
driver.findElement(By.xpath("//*[@id='menu']/ul/li[2]/a")); 
actions.moveToElement(subMenu); 
actions.click().build().perform(); 

HTML結構: -

<div id="menu">   
     <ul id="MenuBar"> 
       <li id="MainLink"> 
        <a href="javascript:add();">add</a> 
       </li> 
       <li id="MainLink"><a>Requests</a> 
        <ul> 
         <li><a href="javascript:check();">User Status</a></li> 
         <li><a href="javascript:confirm();">Confirm User</a></li> 
        </ul> 
       </li> 
       <li id="PrimaryLink"> 
        <a href="javascript:update();">Update</a> 
        <ul></ul> 
       </li>      
     </ul> 
    </div> 

回答

1

這裏是逐步解決你的問題:

  1. 找到Request按鈕&店的元素:

    WebElement ele = driver.findElement(By.xpath("xpath_request_button")); 
    
  2. 使用Actions類懸停在該Request按鈕:

    List<WebElement> links = driver.findElements(By.xpath("common_xpath")); 
    
  3. 接下來,您可以:

    Actions act = new Actions(driver); 
    act.moveToElement(ele).build().perform(); 
    
  4. 使用findElements內爲匹配所有元素的共同的XPath創建列表甚至打印列表的大小以知道列表中的元素數量如下:

    int total_count = links.size(); 
    System.out.println(total_count); 
    

讓我知道這個答案是否是您的問題。

+0

@Giri如果我的答案滿足您的問題,您可以接受它作爲您的問題的解決方案來結束討論?謝謝 – DebanjanB

0

如果你沒收到你的代碼中的任何錯誤,你的點擊是成功的,但不能觸發javascript那麼你可能想利用如下JavascriptExecutor功能:

JavascriptExecutor js = ((JavascriptExecutor) driver); 
    js.executeScript("javascript:check();"); 

上面的代碼將爲您執行javascript函數。