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

com.epam.jdiuitests.implementation.selenium.elements.actions.ElementsActions Maven / Gradle / Ivy

The newest version!
package com.epam.jdiuitests.implementation.selenium.elements.actions;

import com.epam.jdiuitests.core.utils.common.LinqUtils;
import com.epam.jdiuitests.core.utils.common.PrintUtils;
import com.epam.jdiuitests.core.utils.linqInterfaces.JAction;
import com.epam.jdiuitests.core.utils.linqInterfaces.JActionT;
import com.epam.jdiuitests.core.utils.linqInterfaces.JFuncT;
import com.epam.jdiuitests.core.utils.linqInterfaces.JFuncTT;
import com.epam.jdiuitests.implementation.selenium.elements.BaseElement;
import org.openqa.selenium.WebElement;

import java.util.ArrayList;
import java.util.List;

import static com.epam.jdiuitests.core.utils.common.Timer.getByCondition;
import static java.lang.String.format;
import static java.lang.String.join;

/**
 * Created by Roman_Iovlev on 9/3/2015.
 */
public class ElementsActions {
    public BaseElement element;

    public ElementsActions(BaseElement element) {
        this.element = element;
    }

    public ActionInvoker invoker() {
        return element.invoker;
    }

    // Element Actions
    public boolean isDisplayed(JFuncT isDisplayed) {
        return invoker().doJActionResult("Is element displayed", isDisplayed);
    }

    public boolean isHidden(JFuncT isHidden) {
        return invoker().doJActionResult("Is element hidden", isHidden);
    }

    public boolean waitDisplayed(JFuncT isDisplayed) {
        return invoker().doJActionResult("Wait element displayed", isDisplayed);
    }

    public boolean waitVanished(JFuncT isVanished) {
        return invoker().doJActionResult("Wait element vanished", isVanished);
    }

    // Value Actions
    public String getValue(JFuncT getValueFunc) {
        return invoker().doJActionResult("Get value", getValueFunc);
    }

    public void setValue(String value, JActionT setValueAction) {
        invoker().doJAction("Get value", () -> setValueAction.invoke(value));
    }

    // Click Action
    public void click(JAction clickAction) {
        invoker().doJAction("Click on Element", clickAction);
    }

    // Text Actions
    public String getText(JFuncT getTextAction) {
        return invoker().doJActionResult("Get text", getTextAction);
    }

    public String waitText(String text, JFuncT getTextAction) {
        return invoker().doJActionResult(format("Wait text contains '%s'", text),
                () -> getByCondition(getTextAction::invoke, t -> t.contains(text)));
    }

    public String waitMatchText(String regEx, JFuncT getTextAction) {
        return invoker().doJActionResult(format("Wait text match regex '%s'", regEx),
                () -> getByCondition(getTextAction::invoke, t -> t.matches(regEx)));
    }

    // Check/Select Actions
    public boolean isSelected(JFuncT isSelectedAction) {
        return invoker().doJActionResult("Is Selected", isSelectedAction);
    }

    public void check(JAction checkAction) {
        invoker().doJAction("BaseChecker Checkbox", checkAction);
    }

    public void uncheck(JAction uncheckAction) {
        invoker().doJAction("Uncheck Checkbox", uncheckAction);
    }

    public boolean isChecked(JFuncT isCheckedAction) {
        return invoker().doJActionResult("IsChecked",
                isCheckedAction,
                result -> "Checkbox is " + (result ? "checked" : "unchecked"));
    }

    // Input Actions
    public void inputLines(JAction clearAction, JActionT inputAction, String... textLines) {
        invoker().doJAction("Input several lines of text in textarea",
                () -> {
                    clearAction.invoke();
                    inputAction.invoke(join("\n", textLines));
                });
    }

    public void addNewLine(String textLine, JActionT inputAction) {
        invoker().doJAction("Add text from new line in textarea",
                () -> inputAction.invoke("\n" + textLine));
    }

    public String[] getLines(JFuncT getTextAction) {
        return invoker().doJActionResult("Get text as lines", () -> getTextAction.invoke().split("\\n"));
    }

    public void input(String text, JActionT inputAction) {
        invoker().doJAction("Input text '" + text + "' in text field",
                () -> inputAction.invoke(text));
    }

    public void clear(JAction clearAction) {
        invoker().doJAction("Clear text field", clearAction);
    }

    public void focus(JAction focusAction) {
        invoker().doJAction("Focus on text field", focusAction);
    }

    // Selector
    public void select(String name, JActionT selectAction) {
        invoker().doJAction(format("Select '%s'", name), () -> selectAction.invoke(name));
    }

    public void select(int index, JActionT selectByIndexAction) {
        invoker().doJAction(format("Select '%s'", index), () -> selectByIndexAction.invoke(index));
    }

    public boolean isSelected(String name, JFuncTT isSelectedAction) {
        return invoker().doJActionResult(format("Wait is '%s' selected", name), () -> isSelectedAction.invoke(name));
    }

    public String getSelected(JFuncT isSelectedAction) {
        return invoker().doJActionResult("Get Selected element name", isSelectedAction::invoke);
    }

    public int getSelectedIndex(JFuncT isSelectedAction) {
        return invoker().doJActionResult("Get Selected element index", isSelectedAction::invoke);
    }

    //MultiSelector
    public void select(JActionT selectListAction, String... names) {
        invoker().doJAction(String.format("Select '%s'", PrintUtils.print(names)), () -> selectListAction.invoke(names));
    }

    public void select(JActionT selectListAction, int[] indexes) {
        List listIndexes = new ArrayList<>();
        for (int i : indexes)
            listIndexes.add(i + "");
        invoker().doJAction(String.format("Select '%s'", PrintUtils.print(listIndexes)), () -> selectListAction.invoke(indexes));
    }

    public List areSelected(JFuncT> getNames, JFuncTT waitSelectedAction) {
        return invoker().doJActionResult("Are selected", () ->
                LinqUtils.where(getNames.invoke(), waitSelectedAction));
    }

    public boolean waitSelected(JFuncTT waitSelectedAction, String... names) {
        return invoker().doJActionResult(String.format("Are deselected '%s'", PrintUtils.print(names)), () -> {
            for (String name : names)
                if (!waitSelectedAction.invoke(name))
                    return false;
            return true;
        });
    }

    public List areDeselected(JFuncT> getNames, JFuncTT waitSelectedAction) {
        return invoker().doJActionResult("Are deselected", () ->
                LinqUtils.where(getNames.invoke(), name -> !waitSelectedAction.invoke(name)));
    }

    public boolean waitDeselected(JFuncTT waitSelectedAction, String... names) {
        return invoker().doJActionResult(String.format("Are deselected '%s'", PrintUtils.print(names)), () -> {
            for (String name : names)
                if (waitSelectedAction.invoke(name))
                    return false;
            return true;
        });
    }

    public  T findImmediately(JFuncT func) {
        element.setWaitTimeout(0);
        JFuncTT temp = element.avatar.localElementSearchCriteria;
        element.avatar.localElementSearchCriteria = el -> true;
        T result = func.invoke();
        element.avatar.localElementSearchCriteria = temp;
        element.restoreWaitTimeout();
        return result;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy