2

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

顶部菜单项如下所示:

<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 配置文件中启用本机事件:行为没有变化

非常感谢任何帮助,因为我在没有可用菜单系统的情况下死在水中。

顺便说一句:这段代码确实在 IE 中工作,所以它似乎是一个 FF 特定的问题?

4

2 回答 2

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 试试你的代码。

于 2013-08-06T09:19:51.107 回答
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);
于 2013-08-06T09:42:19.250 回答