您好
我试图将鼠标悬停在网站菜单上并单击其内部链接(仅在悬停其可见后)
但问题是当我将鼠标悬停在菜单上时,它只能看到一秒钟,它在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
答案 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);