package org.fluentlenium.core.inject;
import org.openqa.selenium.By;
import org.openqa.selenium.SearchContext;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.pagefactory.ElementLocator;
import java.util.ArrayList;
import java.util.List;
/**
* Search context backed by an ElementLocator.
*/
public class ElementLocatorSearchContext implements SearchContext {
private final ElementLocator locator;
/**
* Creates a new element locator search context.
*
* @param locator element locator
*/
public ElementLocatorSearchContext(ElementLocator locator) {
this.locator = locator;
}
@Override
public List<WebElement> findElements(By by) {
List<WebElement> elements = new ArrayList<>();
List<WebElement> baseElements = locator.findElements();
for (WebElement element : baseElements) {
elements.addAll(element.findElements(by));
}
return elements;
}
@Override
public WebElement findElement(By by) {
return locator.findElement().findElement(by);
}
}