package com.codeborne.selenide.conditions;
import com.codeborne.selenide.Condition;
import com.codeborne.selenide.impl.Html;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.Select;
import java.util.List;
public class Text extends Condition {
protected final String text;
public Text(final String text) {
super("text");
this.text = text;
}
@Override
public boolean apply(WebElement element) {
String elementText = "select".equalsIgnoreCase(element.getTagName()) ?
getSelectedOptionsTexts(element) :
element.getText();
return Html.text.contains(elementText, this.text.toLowerCase());
}
private String getSelectedOptionsTexts(WebElement element) {
List<WebElement> selectedOptions = new Select(element).getAllSelectedOptions();
StringBuilder sb = new StringBuilder();
for (WebElement selectedOption : selectedOptions) {
sb.append(selectedOption.getText());
}
return sb.toString();
}
@Override
public String toString() {
return name + " '" + text + '\'';
}
}