无法使用Selenium WebDriver和Java单击鼠标悬停链接

时间:2013-09-26 16:38:03

标签: java selenium-webdriver

我正在尝试使用下面的代码点击鼠标悬停链接。 webdriver(v.2.35)不会抛出任何错误,但不会单击该元素。有人可以帮我弄清楚出了什么问题吗?

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"

3 个答案:

答案 0 :(得分: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();

答案 1 :(得分:0)

由于http://www.kgisliim.ac.in/上的菜单需要一秒钟才能滑出,您可以添加一个WebDriverWait以确保子菜单有时间变为可见,然后再将光标移动到该子菜单。尝试使用以下行替换for循环中的第一行。这将在子菜单中等待最多5秒(但会在该时间内尽快返回WebElement。)

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

答案 2 :(得分:0)

我最近遇到了phantomJSghostdriver的类似问题。就我而言,问题是窗口大小 - HTML元素在可见区域之外,我的鼠标移动没有效果(默认大小为400x300,相当小)。

您可以使用

检查窗口大小
driver.manage().window().getSize()

你可以用

改变它
driver.manage().window().setSize(new Dimension(width, height));