Selenium Webdriver和Firefox 18

时间:2013-01-09 08:45:29

标签: firefox selenium

我的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。

5 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

回滚到FF17是一个临时工作,直到WebDriver版本支持FF18

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

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

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

答案 4 :(得分:0)

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

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

希望这有效!