【问题标题】:Selenium Webdriver and Firefox 18Selenium Webdriver 和 Firefox 18
【发布时间】:2013-01-09 08:45:29
【问题描述】:

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

【问题讨论】:

  • 如果你完全卡住了,你可以暂时使用Sikuli。我个人更喜欢 Selenium “Actions” 类,因为它更容易。
  • 关于 Selenium 2.29 或 2.30 是否修复此问题的任何消息?

标签: firefox selenium


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        【解决方案4】:

        我的悬停在 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();
                }
            }
        

        【讨论】:

          【解决方案5】:

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

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

          希望这行得通!

          【讨论】:

            猜你喜欢
            • 2013-01-08
            • 1970-01-01
            • 2017-07-20
            • 2021-06-08
            • 2013-06-28
            • 1970-01-01
            • 2016-11-07
            • 2013-01-11
            • 2013-12-28
            相关资源
            最近更新 更多