All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.fluentlenium.core.wait.FluentWaitElement Maven / Gradle / Ivy

package org.fluentlenium.core.wait;

import org.fluentlenium.core.FluentControl;
import org.fluentlenium.core.FluentPage;
import org.fluentlenium.core.conditions.FluentConditions;
import org.fluentlenium.core.conditions.FluentListConditions;
import org.fluentlenium.core.domain.FluentWebElement;

import java.time.Duration;
import java.util.Collection;
import java.util.List;
import java.util.concurrent.TimeUnit;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.Supplier;

/**
 * A wait object wrapping default selenium {@link org.openqa.selenium.support.ui.FluentWait} object into a more
 * complete API, allowing to wait for any condition to be verified on an underlying element.
 */
public class FluentWaitElement implements FluentWaitFunctional, FluentWaitConditions,
        FluentWaitConfiguration {
    private final FluentWebElement element;

    private final FluentWait controlWait;

    /**
     * Creates a new fluent wait for a given element.
     *
     * @param controlWait underlying wait from control interface
     * @param element     underlying element
     */
    public FluentWaitElement(FluentWait controlWait, FluentWebElement element) {
        this.controlWait = controlWait;
        this.element = element;
    }

    /**
     * Get a conditions object used to wait for condition on current element.
     *
     * @return conditions object
     */
    public FluentConditions until() {
        return controlWait.until(element);
    }

    @Override
    public org.openqa.selenium.support.ui.FluentWait getWait() {
        return controlWait.getWait();
    }

    @Override
    public FluentWaitElement atMost(Duration duration) {
        controlWait.atMost(duration);
        return this;
    }

    @Override
    public FluentWaitElement pollingEvery(Duration duration) {
        controlWait.pollingEvery(duration);
        return this;
    }

    @Override
    public FluentWaitElement ignoreAll(Collection> types) {
        controlWait.ignoreAll(types);
        return this;
    }

    @Override
    public FluentWaitElement ignoring(Class exceptionType) {
        controlWait.ignoring(exceptionType);
        return this;
    }

    @Override
    public FluentWaitElement ignoring(Class firstType, Class secondType) {
        controlWait.ignoring(firstType, secondType);
        return this;
    }

    @Override
    public FluentWaitElement withMessage(Supplier message) {
        controlWait.withMessage(message);
        return this;
    }

    @Override
    public boolean hasMessageDefined() {
        return controlWait.hasMessageDefined();
    }

    @Override
    public FluentWaitElement withNoDefaultsException() {
        controlWait.withNoDefaultsException();
        return this;
    }

    @Override
    public void untilPredicate(Predicate predicate) {
        controlWait.untilPredicate(predicate);
    }

    @Override
    public void until(Supplier isTrue) {
        controlWait.until(isTrue);
    }

    @Override
    public FluentConditions until(FluentWebElement element) {
        return controlWait.until(element);
    }

    @Override
    public FluentListConditions until(List elements) {
        return controlWait.until(elements);
    }

    @Override
    public FluentListConditions untilEach(List elements) {
        return controlWait.untilEach(elements);
    }

    @Override
    public FluentConditions untilElement(Supplier selector) {
        return controlWait.untilElement(selector);
    }

    @Override
    public FluentListConditions untilElements(Supplier> selector) {
        return controlWait.untilElements(selector);
    }

    @Override
    public FluentListConditions untilEachElements(Supplier> selector) {
        return controlWait.untilEachElements(selector);
    }

    @Override
    public FluentWaitWindowConditions untilWindow(String windowName) {
        return controlWait.untilWindow(windowName);
    }

    @Override
    public FluentWaitPageConditions untilPage() {
        return controlWait.untilPage();
    }

    @Override
    public FluentWaitPageConditions untilPage(FluentPage page) {
        return controlWait.untilPage(page);
    }

    @Override
    public FluentWaitElement explicitlyFor(long amount, TimeUnit timeUnit) {
        controlWait.explicitlyFor(amount, timeUnit);
        return this;
    }

    @Override
    public FluentWaitElement untilAsserted(Runnable block) {
        controlWait.untilAsserted(block);

        return this;
    }

    /**
     * Wait until function returns true
     *
     * @param function function to be performed
     * @param       FluentWaitElement
     * @return FluentWaitElement
     */
    @Deprecated
    public  T until(Function function) {
        return controlWait.until(function);
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy