我无法使用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();
任何人都可以分享解决方法。
答案 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执行器方面也很幸运,但是我建议您首先从键盘命令开始。