package org.fluentlenium.core.proxy; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.pagefactory.ElementLocator; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.function.Supplier; /** * Element locator implemented by a {@link Supplier} of {@link WebElement}. */ public class ElementSupplierLocator implements ElementLocator { private final Supplier<WebElement> elementSupplier; /** * Creates a new element supplier locator. * * @param elementSupplier element supplier */ public ElementSupplierLocator(Supplier<WebElement> elementSupplier) { this.elementSupplier = elementSupplier; } @Override public WebElement findElement() { return elementSupplier.get(); } @Override public List<WebElement> findElements() { WebElement webElement = elementSupplier.get(); if (webElement == null) { return Collections.emptyList(); } return Arrays.asList(webElement); } @Override public String toString() { return String.valueOf(elementSupplier); } }