我的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。
答案 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
希望这有效!