Skip to main content
 首页 » 编程设计

C# Selenium webdriver mouseOver 再次

2024年02月02日27mfryf

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

我读了这个Is there a proved mouseOver workaround for FirefoxDriver in Selenium2?我就是这样做的:

Actions builder = new Actions(driver); Action hoverOverRegistrar = builder.moveToElement(menuRegistrar); hoverOverRegistrar.perform();

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

我做错了什么?

请您参考如下方法:

可悬停元素我发现最好使用 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); 

只需将它放在一个您可以使用它的地方的方法中,将它传递给您想要悬停的驱动程序和元素,您就可以设置了。