2013-09-26 110 views
1

我試圖用下面的代碼單擊鼠標懸停鏈接。 webdriver(v.2.35)不會拋出任何錯誤,但不會單擊該元素。有人能幫我弄清楚什麼是錯的嗎?無法用Java Selenium WebDriver單擊鼠標懸停鏈接

String URL = "http://www.kgisliim.ac.in/" 
String menu ="Alumni>Register" 

driver.get(URL); 
String[] menuItems = menu.split(">"); 
Actions actions = new Actions(driver); 
WebElement tempElem; 
for (int i =0 ; i< menuItems.length ; i++) {      
    tempElem = driver.findElement(By.linkText(menuItems[i].trim())); 
    actions.moveToElement(tempElem).build().perform(); 
} 
actions.click(); 
actions.perform(); 

注意:上面的代碼工作正常,在下面的情形

String URL = "http://www.flipkart.com/" 
String menu ="Clothing>Jeans" 
+0

'試圖點擊鼠標懸停link'改變它......什麼?你想徘徊嗎?或點擊?你期望的行爲是什麼?將鼠標懸停在此鏈接上,然後點擊顯示的內容? – sircapsalot

回答

1

你可以試試這個:

WebDriver driver=new FirefoxDriver(); 
     driver.get("http://www.kgisliim.ac.in/"); 
     Actions actions=new Actions(driver); 
     WebElement menuHoverLink=driver.findElement(By.linkText("Alumni")); 
     actions.moveToElement(menuHoverLink); 
     //driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS); 
     WebElement subLink=driver.findElement(By.cssSelector(".options>ul>li>a")); 
     actions.moveToElement(subLink); 
     actions.click(); 
     actions.perform(); 
0

由於上http://www.kgisliim.ac.in/菜單需要一秒鐘滑出,你可以添加WebDriverWait以確保在將光標移動到子菜單之前有時間變得可見。嘗試用下面一行替換for循環中的第一行。這會爲子菜單等待最多5秒(但會在此時間內儘快返回WebElement)。

tempElem = new WebDriverWait(driver, 5).until(ExpectedConditions 
     .elementToBeClickable(By.linkText(menuItems[i].trim()))); 
0

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

您可以檢查與

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

窗口的大小和你可以用

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