悬停在一秒后消失

时间:2016-01-04 10:05:31

标签: c# .net internet-explorer selenium selenium-webdriver

您好

我试图将鼠标悬停在网站菜单上并单击其内部链接(仅在悬停其可见后)

但问题是当我将鼠标悬停在菜单上时,它只能看到一秒钟,它在Internet Explorer WebDriver中发生,在其他网站上都工作正常 它能成为什么?

我尝试的是什么:

  • 点击菜单driver.FindElement(By.XPath("//div[@id='Menu']/ul/li[2]")).Click(); // Exception: element not clickable .

我的代码是:

Actions actions = new Actions(driver);
IWebElement menuHoverLink = driver.FindElement(By.XPath("//div[@id='Menu']/ul/li[2]"));
actions.MoveToElement(menuHoverLink);
actions.Build().Perform(); // <- appear for a sec and closed
actions.Click(); // <- doing nothing 

driver.FindElement(By.Id("inMenuLink")).Click(); // Exception: element not visible

2 个答案:

答案 0 :(得分:2)

看起来这是InternetExplorerDriver的已知问题。

根据official documentation of InternetExplorerDriver

  

悬停在元素上

     

当您尝试将鼠标悬停在元素和物理鼠标上时   光标位于IE浏览器窗口的边界内,悬停   不管用。更具体地说,悬停似乎适用于a   小一秒,然后元素将恢复到它的   以前的状态。发生这种情况的流行理论是IE   在事件循环期间进行某种类型的命中测试,这会导致它   在物理光标位置时响应物理鼠标位置   在窗口范围内。 WebDriver开发团队一直都是   无法找到IE的这种行为的解决方法。

如上所述,您应该尝试将物理鼠标光标移出IE窗口边界,然后尝试执行代码。

希望这有帮助。

答案 1 :(得分:1)

试试这个: -

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);";


((JavascriptExecutor)driver).executeScript(javaScript, webElement);