本机事件在不同版本的 firefox 和 selenium 上表现不同
Native events behaves differently on different versions of firefox with selenium
之前我使用 Firefox 25.0.1 和 Selenium 2.42.2 来测试我的网络应用程序。它由一个菜单选项卡组成,将鼠标悬停在其上会显示子菜单,然后我必须单击其中一个子菜单。我正在使用以下代码:
Actions actions = new Actions(getFFWebDriver());
Action action = actions.moveToElement(getFFWebDriver().findElement(By.id("main.menu"))).build();
action.perform();
getWebDriver().findElement(By.xpath("//*[@id=\"submenu\"]/span")).click();
但是当我将浏览器升级到版本 28 时,它无法像以前那样工作。
我也尝试将 selenium 版本升级到 2.46,但它仍然无法像以前那样使用 selenium 2.42 和 FF-25。
如有任何帮助,我们将不胜感激。
firefox webdriver 的本机事件支持往往针对每个 selenium 版本的几个特定浏览器版本。我怀疑您的 selenium 版本不支持 firefox 28 中的本机事件。
V2.42 的变更日志没有说明他们支持本机事件的 firefox 版本,但显然 V2.41 支持 firefox 的 V28。您总是可以尝试降级到该版本的 selenium 或在 selenium V2.46 上尝试 firefox 33,它看起来像具有本机事件支持的最新版本的 firefox。
https://github.com/SeleniumHQ/selenium/blob/master/java/CHANGELOG
还有选择合成事件而不是本地事件的选项。
对我来说,它是这样工作的:
WebElement menu = driver.findElement(men);
Actions builder = new Actions(driver);
builder.moveToElement(menu).moveToElement(driver.findElement(submenu)).click().build().perform();
即使我升级 FF 25 -> 30 也能正常工作,并且在 Chrome 上也能正常工作。
之前我使用 Firefox 25.0.1 和 Selenium 2.42.2 来测试我的网络应用程序。它由一个菜单选项卡组成,将鼠标悬停在其上会显示子菜单,然后我必须单击其中一个子菜单。我正在使用以下代码:
Actions actions = new Actions(getFFWebDriver());
Action action = actions.moveToElement(getFFWebDriver().findElement(By.id("main.menu"))).build();
action.perform();
getWebDriver().findElement(By.xpath("//*[@id=\"submenu\"]/span")).click();
但是当我将浏览器升级到版本 28 时,它无法像以前那样工作。 我也尝试将 selenium 版本升级到 2.46,但它仍然无法像以前那样使用 selenium 2.42 和 FF-25。
如有任何帮助,我们将不胜感激。
firefox webdriver 的本机事件支持往往针对每个 selenium 版本的几个特定浏览器版本。我怀疑您的 selenium 版本不支持 firefox 28 中的本机事件。
V2.42 的变更日志没有说明他们支持本机事件的 firefox 版本,但显然 V2.41 支持 firefox 的 V28。您总是可以尝试降级到该版本的 selenium 或在 selenium V2.46 上尝试 firefox 33,它看起来像具有本机事件支持的最新版本的 firefox。
https://github.com/SeleniumHQ/selenium/blob/master/java/CHANGELOG
还有选择合成事件而不是本地事件的选项。
对我来说,它是这样工作的:
WebElement menu = driver.findElement(men);
Actions builder = new Actions(driver);
builder.moveToElement(menu).moveToElement(driver.findElement(submenu)).click().build().perform();
即使我升级 FF 25 -> 30 也能正常工作,并且在 Chrome 上也能正常工作。