2012-09-20 42 views
0

JavaScript函數,它在運行時加載菜單。在鼠標懸停時,LoadMenu函數加載菜單項,我需要在MouseClick()事件中與它分離的位置。如何點擊使用硒在鼠標懸停上填充的Windows菜單

如何使用Selenium Webdriver執行此操作?

function LoadMenus(){ 

     window.menu_1234567 = new Menu("root",150,20,"Arial, Helvetica, sans-serif",12,"#336699","#333333","#ffffff","#E2E6CD","left","middle",10,0,200,-5,7,true,false,true,0,true,true); 
     menu_1234567.addMenuItem("Partner Management","location='/dash-1.0/partnerconfiguration/partnerAdministration.action'"); 
     menu_12345678_0.addMenuItem("User Management","location='/dash-1.0/systemadminconfiguration/userSysAdmin.action'"); 
     menu_1234567.addMenuItem("Audit Report","location='/dash-1.0/configuration/auditReport.action'"); 
     menu_1234567.addMenuItem("Change Password","location='/dash-1.0/changecurrentpassword.action'"); 
     menu_1234567.addMenuItem("Sign Out","location='/dash-1.0/logout.action'"); 
     menu_1234567.hideOnMouseOut=true; 
     menu_1234567.writeMenus(); 
    }; 
    LoadMenus();     

下面是HTML代碼:

<div id="menuItem0" class="menuItem" style="position: absolute; left: 0px; top: 0px; font-family: Arial,Helvetica,sans-serif; font-size: 12px; height: 20px; background-color: rgb(255, 255, 255); visibility: inherit;"> 
<div id="menuItemText0" class="menuItemText" style="position:absolute;left:11px;top:3px;color:#336699;">Partner Management </div> 
<div id="menuItemHilite0" class="menuItemHilite" style="position: absolute; left: 11px; top: 3px; color: rgb(51, 51, 51); visibility: hidden;">Partner Management </div> 
</div> 

我通過硒的webdriver但element.click元素 「menuItemText2」()方法沒有任何反應。我嘗試過下面提到的所有場景,但無法通過硒web驅動程序正確點擊菜單項。

// case 1 tried using mouseMove 
Point p=element.getLocation(); 
System.out.println("x="+p.getX()); 
System.out.println("y="+p.getY()); 
Robot robot = new Robot(); 
robot.mouseMove(p.getX(),p.getY()); 

// case 2 tried using moveByOffset 
Actions builder = new Actions(driver); 
builder.moveToElement(element).build().perform(); 
builder.moveByOffset(p.x, p.y).perform(); 

// case 3 tried using Action builder 
Actions hover = builder.moveToElement(element, p.x, p.y); 
hoverOverRegistrar.perform(); 
hover.perform(); 
hover.build(); 
hover.click(); 

//case 4 tried by executing javascript and search element by name 
element= driver.findElement(By.name("Sign Out ")); 
JavascriptExecutor js = (JavascriptExecutor) driver; 
js.executeScript("$('div#menuItemText2').mouseover();"); 
js.executeScript("$('div#menuItem3.menuItem').click();"); 

// case 5 tried by executing javascript and search element by id 
element = driver.findElement(By.id("menuItem4")); 
JavascriptExecutor js = (JavascriptExecutor) driver; 
js.executeScript("$('div#menuItem4.menuItem').hover();"); 
element.click(); 

請解釋如何點擊這些菜單項,填充鼠標懸停和單擊事件不與web元素協調。

+0

喜沙善耆那教的,我也面臨這個問題。如果您發現解決方案的意思,請在此處發佈。這對其他人會有幫助。 – Manigandan

回答

0

你有沒有試過Action接口?

尤其是點「生成動作鏈」可以幫助你

我那樣做:

private void hoverAndClick(WebElement[] hoverer, WebElement element){ 

    Actions actions = new Actions(this.driver); 

    for (WebElement we : hoverer) { 
     Action hovering = actions.moveToElement(we).build(); 
     hovering.perform(); 
    } 

    element.click(); 
} 

如果你只需要一個元素徘徊,直到永遠,刪除陣列和ateration或複製此:

private void hoverAndClick(WebElement hover, WebElement element){ 

    Actions actions = new Actions(this.driver); 

    Action hovering = actions.moveToElement(hover).build(); 
    hovering.perform(); 
    element.click(); 

} 
0

我會修改情況5,你描述:

// case 5 tried by executing javascript and search element by id 
element = driver.findElement(By.id("menuItem4")); 
JavascriptExecutor js = (JavascriptExecutor) driver; 
js.executeScript("$('div#menuItem4.menuItem').hover();"); 
element.click(); 

以下列方式;

String cssSelector="[id='menuItem4']"; 

    public void jsClick(String css){ 

     JavascriptExecutor js = (JavascriptExecutor) driver; 
      StringBuilder stringBuilder = new StringBuilder(); 
      stringBuilder.append("var x = $(\'"+css+"\');"); 
      stringBuilder.append("x.click();"); 
      js.executeScript(stringBuilder.toString()); 
    } 
    jsClick(cssSelector); 

希望這在某種程度上可以幫助你)

相關問題