package org.fluentlenium.core.conditions;
import org.fluentlenium.core.domain.FluentWebElement;
import java.util.Arrays;
/**
* Fluent object to handle {@link org.openqa.selenium.support.ui.ExpectedConditions} on FluentWebElement in fluentlenium API.
*/
public class WebElementConditions extends AbstractObjectConditions<FluentWebElement> implements FluentConditions {
/**
* Creates a new conditions object on element
*
* @param element underlying element
*/
public WebElementConditions(FluentWebElement element) {
super(element);
}
/**
* Creates a new conditions object on element
*
* @param element underlying element
* @param negation negation value
*/
public WebElementConditions(FluentWebElement element, boolean negation) {
super(element, negation);
}
@Override
protected AbstractObjectConditions<FluentWebElement> newInstance(boolean negationValue) {
return new WebElementConditions(object, negationValue);
}
@Override
@Negation
public WebElementConditions not() {
return (WebElementConditions) super.not();
}
@Override
public boolean present() {
return verify(FluentWebElement::present);
}
@Override
public boolean clickable() {
return verify(FluentWebElement::clickable);
}
@Override
public boolean stale() {
return verify(FluentWebElement::stale);
}
@Override
public boolean displayed() {
return verify(FluentWebElement::displayed);
}
@Override
public boolean enabled() {
return verify(FluentWebElement::enabled);
}
@Override
public boolean selected() {
return verify(FluentWebElement::selected);
}
@Override
public boolean attribute(String name, String value) {
return attribute(name).equalTo(value);
}
@Override
public StringConditions attribute(String name) {
return new StringConditionsImpl(object.attribute(name), negation);
}
@Override
public boolean id(String id) {
return id().equalTo(id);
}
@Override
public StringConditions id() {
return new StringConditionsImpl(object.id(), negation);
}
@Override
public boolean name(String name) {
return name().equalTo(name);
}
@Override
public StringConditions name() {
return new StringConditionsImpl(object.name(), negation);
}
@Override
public boolean tagName(String tagName) {
return tagName().equalTo(tagName);
}
@Override
public StringConditions tagName() {
return new StringConditionsImpl(object.tagName(), negation);
}
@Override
public boolean value(String value) {
return value().equalTo(value);
}
@Override
public StringConditions value() {
return new StringConditionsImpl(object.value(), negation);
}
@Override
public boolean text(String text) {
return text().equalTo(text);
}
@Override
public StringConditions text() {
return new StringConditionsImpl(object.text(), negation);
}
@Override
public boolean textContent(String anotherString) {
return textContent().equalTo(anotherString);
}
@Override
public StringConditions textContent() {
return new StringConditionsImpl(object.textContent(), negation);
}
@Override
public RectangleConditions rectangle() {
return new RectangleConditionsImpl(object.getElement().getRect(), negation);
}
@Override
public boolean className(String className) {
FluentWebElement element = getActualObject();
String classAttribute = element.attribute("class");
if (classAttribute == null) {
return false;
}
String[] classes = classAttribute.split(" ");
return Arrays.asList(classes).contains(className);
}
}