9

我的 Selenium 测试使用 onMouseOver 功能,例如

 List<WebElement> menuitems = getDriver().findElements(By.tagName("li"));
    Actions builder = new Actions(getDriver());
    WebElement menu = menuitems.get(2);
    getDriver().manage().timeouts().implicitlyWait(Constants.IMPLICITY_WAIT, TimeUnit.SECONDS);
    builder.moveToElement(menu).build().perform();

我正在使用 Firefox 驱动程序。由于 Firefox 将自身更新到版本 18,我的测试停止工作。我知道这与原生事件支持有关 - 但版本 18 不支持原生事件,还是我能够启用它们?如果没有,我的代码是否有任何替代实现?

我正在使用 selenium java 2.28.0。

4

5 回答 5

5

对于 Firefox 18 支持,我们需要使用 selenium webdriver api 2.28.0,jar。

于 2013-01-17T16:31:54.640 回答
1

Selenium Java 2.27 提到已添加对 FF17 的本机支持。但是,在 2.28 的更改日志中没有提到对 FF18 的支持。所以它的 webdriver 不支持原生事件,而不是 FF18 不支持原生事件。您可以尝试降级到 FF 17,并且可能会关闭自动更新一段时间。

于 2013-01-09T11:51:27.547 回答
1

在 WebDriver 版本支持 FF18 之前,回滚到 FF17 是一项临时工作

FF17 扩展支持发布包 -- http://www.mozilla.org/en-US/firefox/organizations/all.html

注意:如果您是 Mac 用户,您只需在应用程序文件夹中将当前 FF 从“FireFox”重命名为“FireFox18”即可。从上面的 URL 安装包,这将创建一个名为“FireFox”的新应用程序,WebDriver 将使用该应用程序。

于 2013-01-11T19:56:17.533 回答
1

我的悬停与 v28 中断。我现在使用下面的 hoverOver 方法和一个可选的 javascript 解决方法,它似乎工作正常。

    public void HoverOver(IWebElement elem, bool javascriptWorkaround = true)
    {
        if (javascriptWorkaround)
        {
                String code = "var fireOnThis = arguments[0];"
                    + "var evObj = document.createEvent('MouseEvents');"
                    + "evObj.initEvent( 'mouseover', true, true );"
                    + "fireOnThis.dispatchEvent(evObj);";
                ((IJavaScriptExecutor)driver).ExecuteScript(code, elem);
        }
        else
        {
            Actions builder = new Actions(driver);
            builder.MoveToElement(elem).Build().Perform();
        }
    }
于 2013-01-24T10:04:25.037 回答
0

我在使用 Firefox 20 时遇到了同样的问题。然后我重新安装了最新的 Selenium 服务器(.jar 文件)。

http://selenium.googlecode.com/files/selenium-server-standalone-2.32.0.jar

希望这有效!

于 2013-05-22T13:06:55.990 回答