package com.algocrafts.chapter5; import com.algocrafts.locators.Locators; import com.algocrafts.selectors.TagName; import com.algocrafts.selenium.Browser; import com.algocrafts.selenium.Element; import org.junit.Ignore; import org.junit.Test; import org.openqa.selenium.chrome.ChromeDriver; import java.util.ArrayList; import java.util.List; import java.util.Optional; import java.util.stream.Stream; import static com.algocrafts.browsers.Browsers.CHROME; import static com.algocrafts.conditions.ElementPredicates.DISPLAYED; import static com.algocrafts.conditions.OptionalPresents.PRESENT; import static com.algocrafts.selectors.ClassName.L_TINYNAL1; import static com.algocrafts.selectors.Id.GLOBAL_NAV; import static com.algocrafts.selectors.TagName.LI; import static com.algocrafts.selectors.TagName.UL; import static java.util.stream.Collectors.toList; @Ignore public class NaiveJQueryHomePageTest { @Test public void mouseOver4() { Browser<ChromeDriver> browser = CHROME; browser.get("https://jquery.org"); List<Element> elements = browser.untilFound(GLOBAL_NAV) .untilFound(L_TINYNAL1) .findElements(LI) .filter(DISPLAYED.and(Locators.<Element>optionalElement(UL).and(PRESENT.negate()).or( Locators.<Element>optionalElement(LI).and(PRESENT)))).collect(toList()); List<Element> menu = new ArrayList<>(); elements.forEach(menubarElement -> { Element link = menubarElement.untilFound(TagName.A); System.out.println("Menu Bar[" + link.getText() + "]"); menu.add(link); browser.mouseOver(menubarElement); Optional<Element> optionalElement = menubarElement.optionalElement(UL); if (optionalElement.isPresent()) { Stream<Element> meneElements = optionalElement.get() .findElements(LI) .map(liElement -> { Element menuElement = liElement.untilFound(TagName.A); System.out.println(" |-- Menu[" + menuElement.getText() + "]"); return menuElement; }); menu.addAll(meneElements.collect(toList())); } } ); menu.forEach(Element::click); } }