2013-04-23 80 views
0

我想用selenium webdriver點擊子菜單項,這是默認不可見的。 它在mousehover上可見。 我試着用一些代碼,如下圖所示用webdriver selenium處理子菜單項

Caused by: org.openqa.selenium.remote.ErrorHandler$UnknownServerException: Element is not currently visible and so may not be interacted with.

下面的代碼是給錯誤:

Actions actions = new Actions(driver); 
    WebElement menuHoverLink = driver.findElement(By.linkText("RENT")); 
    //WebElement menuHoverLink = driver.findElement(By.className("current")); 
    actions.moveToElement(menuHoverLink); 
    WebElement subLink = driver.findElement(By.cssSelector("a[href='nemc.com/rentals/easy-rent']")); 
    actions.moveToElement(subLink); 
    actions.click(); 
    actions.perform();  
+0

您的鼠標懸停邏輯有問題改變它。請向我們展示您的代碼? – Hemanth 2013-04-23 04:48:52

+0

我已經使用了下面的代碼,它正在工作,但問題是它重定向到其他菜單項:操作actions = new Actions(driver); \t WebElement menuHoverLink = driver.findElement(By.linkText(「RENT」)); \t // WebElement menuHoverLink = driver.findElement(By.className(「current」)); \t actions.moveToElement(menuHoverLink); \t \t WebElement subLink = driver.findElement(By.cssSelector(「a [href ='http://www.nemc.com/rentals/easy-rent']」)); \t actions.moveToElement(子鏈路); \t actions.click(); \t actions.perform(); – 2013-04-23 06:38:30

+0

編輯我的答案..如果出來..如果它的網站你可以分享..然後分享網址.. – 2013-04-23 07:32:50

回答

2

使用Actions類做你的菜單項的mousehover,然後點擊在子菜單選項上。您可以參考Actions類以獲得可用方法的概述,並瞭解如何使用這些交互。

Actions actions = new Actions(driver); WebElement menuHoverLink = driver.findElement(By.linkText("RENT")); 
actions.moveToElement(menuHoverLink).perform(); 
driver.findElement(By.cssSelector("a[href='nemc.com/rentals/easy-rent']")).click(); 

我希望你locatros是correct..you可能希望使用[包含(@ HREF, 'nemc.com /租賃')」

0

嘗試使用下面的代碼。它應該工作。嘗試將perform()添加到moveToElement語句中,如下所示。

Actions actions = new Actions(driver); 
WebElement menuHoverLink = driver.findElement(By.linkText("RENT")); 

actions.moveToElement(menuHoverLink).perform(); 
WebElement subLink = driver.findElement(By.cssSelector("a[href='nemc.com/rentals/easy-rent']")); 
sublink.click(); 
0

在某些應用程序中,Action交互可能不起作用。我個人面臨的問題,然後我使用下面的解決方案。我從硒問題跟蹤器頁面採取了此解決方案。

WebElement targetElement = driver.findElement(By.id("locator")); 
JavascriptExecutor js = (JavascriptExecutor) driver; 
String mouseOverScript = "if(document.createEvent){var evObj = document.createEvent('MouseEvents');evObj.initEvent('mouseover', true, false); arguments[0].dispatchEvent(evObj);} else if(document.createEventObject) { arguments[0].fireEvent('onmouseover');}"; 
js.executeScript(mouseOverScript, targetElement); 
driver.findElement(By.id("Click locator")).click; 
0

我遇到了類似的問題跌跌撞撞最近,隨着phantomJSghostdriver。在我的情況下,問題在於窗口大小 - HTML元素超出了可見區域,我的鼠標移動沒有任何效果(默認大小爲400x300,這相當小)。

您可以

driver.manage().window().getSize() 

檢查窗口的大小和你可以用

driver.manage().window().setSize(new Dimension(width, height)); 
相關問題