Firefox中的webdriver mouseover停止工作

时间:2013-06-04 13:34:32

标签: java firefox webdriver mousehover

我在测试的应用程序中有几个菜单需要鼠标悬停在顶部菜单项上,以显示菜单的其余部分(将其放下)。

顶部菜单项如下所示:

<li>
  <a href="javascript:void(0)">>        
    <span>Orders</span>

在过去的3到4个月里,我使用了这些代码,没有任何问题:

WebElement webElement = driver.findElement(By.xpath("//li/a[span[text()='Orders']]"));
new Actions(driver).moveToElement(webElement).build().perform();

这会将鼠标悬停在“订单”菜单项上,然后允许我选择其中一个已删除的项目。

我现在正在使用FF21和WebDriver 2.33,并且悬停不再有效。 “订单”菜单项将悬停在上面,菜单将下拉,但也会立即再次卷起。这使我无法选择子菜单项。

到目前为止我尝试过:

  • 在上面的代码之后添加了一个等待,以允许我选择子菜单项: 没用?
  • 在我正在使用的firefox配置文件中启用了本机事件: 没有改变行为

任何帮助都非常感激,因为我在没有工作菜单系统的情况下死在水中。

BTW:这段代码 在IE中工作,所以它似乎是一个特定于FF的问题?

2 个答案:

答案 0 :(得分:1)

基于Selenium的更改日志(https://code.google.com/p/selenium/source/browse/java/CHANGELOG),似乎仅在Firefox 20中支持本机事件(因为您正在使用Actions类)。 请在更新日志中抢夺v2.32.0。有一条线:

  

“此版本支持Firefox版本:10esr,17esr,19,20”

v2.33.0的更新日志没有任何关于支持Firefox 21的内容。

使用Firefox 20试用您的代码。

答案 1 :(得分:0)

尝试以下java脚本。它在我们的项目中有效。希望它也适合你...干杯......

String javaScript = "var evObj = document.createEvent('MouseEvents');" + "evObj.initMouseEvent(\"mouseover\",true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);"
         + "arguments[0].dispatchEvent(evObj);";
         ((JavascriptExecutor) Driver.driver).executeScript(javaScript, element);