У меня есть многоуровневое меню навигации в моем проекте. Сначала я должен определить, является ли ссылка подменю или узлом. Мне нужно навести курсор на пункты меню (которые являются гиперссылками) и щелкнуть по всем гиперссылкам под ними, чтобы открыть страницы, если они являются последними в иерархии или если они являются подменю, тогда мне нужно навести курсор и далее открыть меню и нажмите на все гиперссылки под ними.
Ниже приведен мой код
@FindBy(xpath = "//ul[@id='menu-main-navigation-1']//li[contains(@class,'menu-item-has-children')]")
private List<WebElement> menuItems;
public void checkNavigationMenuLinks() {
String parentTab = null;
String clickOnLink = Keys.chord(Keys.CONTROL, Keys.ENTER);
WaitUtilities.waitLongForElementVisible(navigationMenu);
if (WaitUtilities.elementIfVisible(navigationMenu)) {
for (WebElement link : menuItems) {
MouseHoverUtilities.hover(link);
List<WebElement> linksInSubmenu = link.findElements(By.tagName("a"));
for(WebElement submenuLink : linksInSubmenu) {
String href = submenuLink.getAttribute("href");
submenuLink.sendKeys(clickOnLink);
Iterator<String> handleIterator = Browser.driver.getWindowHandles().iterator();
parentTab = handleIterator.next();
if(handleIterator.hasNext()) {
Browser.driver.switchTo().window(handleIterator.next());
Browser.driver.close();
Browser.driver.switchTo().window(parentTab);
}
}
}
Browser.driver.switchTo().window(parentTab);
}
}
Код работает нормально до первого подменю. Количество пунктов меню правильное. Он пытается l oop через меню, пытаясь щелкнуть их ссылки. Поскольку элементы подменю также являются ссылками, код нажимает на них вместо того, чтобы навести на них курсор, чтобы открыть его содержимое, и вот когда он разрывается.
Что можно сделать, чтобы оно зависало в подменю вместо нажатия на него ?
Ниже приведена упрощенная версия HTML для моего меню навигации
<nav>
<ul>
<li class='menu-item-has-children'>
<a href='https://xxx'>xxx</a>
<div>
<div>
<ul>
<li class='menu-item-has-no-children'>
<a href='https://xxx'>xxx</a>
</li>
<li class='menu-item-has-no-children'>
<a href='https://xxx'>xxx</a>
</li>
<li class='menu-item-has-no-children'>
<a href='https://xxx'>xxx</a>
</li>
</ul>
</div>
</div>
</li>
</ul>
</li>
<li class='menu-item-has-children'>
<a href='https://xxx'>xxx</a>
<div>
<div>
<ul>
<li class='menu-item-has-children'>
<a href='https://xxx'>xxx</a>
<div>
<div>
<ul>
<li class='menu-item-has-no-children'>
<a href='https://xxx'>xxx</a>
</li>
<li class='menu-item-has-no-children'>
<a href='https://xxx'>xxx</a>
</li>
<li class='menu-item-has-no-children'>
<a href='https://xxx'>xxx</a>
</li>
</ul>
</div>
</div>
</li>
<li class='menu-item-has-children'>
<a href='https://xxx'>xxx</a>
<div>
<div>
<ul>
<li class='menu-item-has-no-children'>
<a href='https://xxx'>xxx</a>
</li>
<li class='menu-item-has-no-children'>
<a href='https://xxx'>xxx</a>
</li>
<li class='menu-item-has-no-children'>
<a href='https://xxx'>xxx</a>
</li>
</ul>
</div>
</div>
</li>
<li class='menu-item-has-children'>
<a href='https://xxx'>xxx</a>
<div>
<div>
<ul>
<li class='menu-item-has-no-children'>
<a href='https://xxx'>xxx</a>
</li>
<li class='menu-item-has-no-children'>
<a href='https://xxx'>xxx</a>
</li>
<li class='menu-item-has-no-children'>
<a href='https://xxx'>xxx</a>
</li>
</ul>
</div>
</div>
</li>
</ul>
</div>
</div>
</li>
<li class='menu-item-has-children'>
<a href='https://xxx'>xxx</a>
<div>
<div>
<ul>
<li class='menu-item-has-no-children'>
<a href='https://xxx'>xxx</a>
</li>
<li class='menu-item-has-no-children'>
<a href='https://xxx'>xxx</a>
</li>
<li class='menu-item-has-no-children'>
<a href='https://xxx'>xxx</a>
</li>
</ul>
</div>
</div>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</nav>