2013-09-26 78 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)); 
相关问题