2013-03-13 125 views
1

自升级到Firefox 19我的测试打破了我需要悬停在链接上显示子菜单。在此之前的Firefox 19以下工作就像一个魅力:如何鼠标悬停并保持

/* 
    * Hover over column header 
    */ 
    WebElement columnsRoot = driver.findElement(By.xpath(COLUMNS_ROOT_XPATH)); 
    WebElement firstColumn = columnsRoot.findElement(By.xpath("./td[1]/div")); 
    Actions builder = new Actions(driver); 
    builder.moveToElement(firstColumn).build().perform(); 

    /* 
    * Click on dropdown button after it appears 
    */ 
    WebElement dropdown = columnsRoot.findElement(By.xpath("./td[1]/div/a")); 
    dropdown.click(); 
    Thread.sleep(500); 

    /* 
    * Hover over columns menu 
    */ 
    String columnsMenuXpath = "(//div[@class=\" x-ignore x-menu x-component\"]//a)[3]"; 
    WebElement columnsMenu = driver.findElement(By.xpath(columnsMenuXpath)); 
    builder.moveToElement(columnsMenu).build().perform(); 

悬停在列菜单的子菜单上面会通过,我会遍历显示列的列表出现之后。升级到Firefox 19后,最后一步中的子菜单只出现一瞬间消失,这会导致一堆NoSuchElementException异常,显然是因为子菜单不在那里,我仍然试图点击某些东西。

我试着将鼠标悬停在菜单上,使用另一个动作移动到子菜单中的一个项目,希望能够保持子菜单打开但没有这样的运气。

有没有人遇到过这个问题?如果是这样,是否有解决方法或什么?

我使用硒2.31.0我升级到了今天,从2.28.0由于与Firefox 19

回答

1

不兼容问题找到一个解决办法,那就是移动到下一个子菜单,而是使用moveToElement(webelement)这是别人的建议,但没有为我工作。我的工作是使用moveByOffset(int x,int y)方法。所以上空盘旋,将显示子菜单,我做了链接后:

Actions movePointerRight = new Actions(driver); 
movePointerRight.moveByOffset(100, 0).build().perform(); 

这似乎已经得到了我的过去我的问题暂时,但我仍然有兴趣知道其他人想出的。