1

我不知道如何处理 selenium 中的 mouseOver。我正在使用FF13。并使用最新版本的 webdriver。

我读到这个​​Selenium2 中的 FirefoxDriver 是否有经过验证的 mouseOver 解决方法?我就是这样做的:

动作生成器 = 新动作(驱动程序);动作 hoverOverRegistrar = builder.moveToElement(menuRegistrar); hoverOverRegistrar.perform();

但是当它指向该对象时,另一个对象(下拉菜单)会出现片刻然后隐藏,因此 selenium 并不总是有时间点击出现的下拉菜单。

我究竟做错了什么?

4

2 回答 2

3

可悬停元素我发现最好使用 JavaScript。Action Builder 的失败率往往很高,并且会导致其他可悬停元素在页面滚动时变得可见,从而导致您想要的元素变得模糊。我在网上的某个地方找到了这种方法(不记得在哪里),它比我尝试过的任何其他方法都好得多。

String javaScript = "var evObj = document.createEvent('MouseEvents');" +
                "evObj.initMouseEvent(\"mouseover\",true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);" +
            "arguments[0].dispatchEvent(evObj);";


IJavaScriptExecutor executor = driver as IJavaScriptExecutor;
executor.ExecuteScript(javaScript, webElement);

只需将其放入您可以使用的方法中,将您想要悬停的驱动程序和元素传递给它,您将被设置。

于 2016-04-26T18:24:53.817 回答
2

我想这样的事情应该有效 -

Actions builder = new Actions(driver);
builder.moveToElement(DropDown tab element).click().moveToElement(Tab you want to click element).click().build().perform();

如果有任何问题。请发布您获得的堆栈跟踪。

于 2012-07-04T05:44:03.273 回答