来自Selenium Webdriver的IE11中的悬停和点击不起作用

时间:2018-03-07 12:39:22

标签: selenium selenium-webdriver webdriver

我无法使用selenium悬停并点击IE 11中的子菜单。我正在使用下面的代码。

Actions actions = new Actions(driver);
actions.moveToElement(driver.findElement(By.xpath(Locator))).click().build().perform();
wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath(Locator)]")));  
// until this submenu is found
action.moveToElement(driver.findElement(By.xpath(Sub Menu Locator))).build().perform();;
driver.findElement(By.xpath(Sub Menu Locator)).click();

任何人都可以分享解决方法。

3 个答案:

答案 0 :(得分:0)

鼠标悬停通过元素推出子元素时,您不必点击。您可以使用以下代码块鼠标悬停 元素并单击子元素

Actions actions = new Actions(driver);
actions.moveToElement(driver.findElement(By.xpath(Locator))).perform();
driver.findElement(By.xpath(Sub Menu Locator)).click();

答案 1 :(得分:0)

如果你得到一个元素不可见的异常。你可以尝试代码

Actions actions = new Actions(driver);
actions.moveToElement(driver.findElement(By.xpath(Locator))).perform();
//SubMenu locaotor
WebElement SubMenu = driver.findelements(By.Xpath(SubLocator));
String onClickScript = 'if(document.createEvent){var evObj = document.createEvent(\'MouseEvents\');evObj.initEvent(\'click\',true, false); arguments[0].dispatchEvent(evObj);} else if(document.createEventObject){ arguments[0].fireEvent(\'onclick\');}'
js.executeScript(onClickScript, SubMenu)  

答案 2 :(得分:0)

根据我的阅读,Selenium的Webdriver对IE11和Web issue中详细介绍的Web驱动程序有些脆弱。我使用的一种解决方法是发送键盘命令,而不是.click。

Actions actions = new Actions(driver);
actions.moveToElement(driver.findElement(By.xpath(Locator))).build().perform();

wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath(Locator)]")));  
// until this submenu is found
action.moveToElement(driver.findElement(By.xpath(Sub Menu Locator))).build().perform();;
driver.findElement(By.xpath(Sub Menu Locator)).SendKeys(Keys.Space);

我认为最好使用空格键,因为如果您使用的是表格,则使用ENTER键将发送该表格。我在Javascript执行器方面也很幸运,但是我建议您首先从键盘命令开始。