Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,16 @@ public interface SeleniumQueryWaitEvaluateUntil<T> {
*/
SeleniumQueryWaitAndOrThen contains(String string);

/**
* Tests if the result of the preceding function contains the given argument ignoring text case.
*
* @param string The string the function call result must contain.
* @return An element that allows chaining of further waiting conditions or calling regular functions.
*
* @since 0.18.0
*/
SeleniumQueryWaitAndOrThen containsIgnoreCase(String string);

/**
* Tests if the result of the preceding function matches the given regex.
*
Expand Down
11 changes: 7 additions & 4 deletions src/main/java/io/github/seleniumquery/wait/EvaluateUntil.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,7 @@
import io.github.seleniumquery.SeleniumQueryObject;
import io.github.seleniumquery.SeleniumQueryWaitAndOrThen;
import io.github.seleniumquery.SeleniumQueryWaitEvaluateUntil;
import io.github.seleniumquery.wait.evaluators.ContainsEvaluator;
import io.github.seleniumquery.wait.evaluators.EqualsEvaluator;
import io.github.seleniumquery.wait.evaluators.Evaluator;
import io.github.seleniumquery.wait.evaluators.MatchesEvaluator;
import io.github.seleniumquery.wait.evaluators.*;
import io.github.seleniumquery.wait.evaluators.comparison.GreaterThanEvaluator;
import io.github.seleniumquery.wait.evaluators.comparison.LessThanEvaluator;
import io.github.seleniumquery.wait.getters.Getter;
Expand Down Expand Up @@ -66,6 +63,12 @@ public SeleniumQueryWaitAndOrThen contains(String string) {
return new AndOrThen(fluentWait.waitUntil(containsEvaluator, string, seleniumQueryObject, this.negated));
}

@Override
public SeleniumQueryWaitAndOrThen containsIgnoreCase(String string) {
Evaluator<String> containsEvaluator = new ContainsIgnoreCaseEvaluator(getter);
return new AndOrThen(fluentWait.waitUntil(containsEvaluator, string, seleniumQueryObject, this.negated));
}

@Override
public SeleniumQueryWaitAndOrThen matches(String regex) {
Evaluator<String> matchesEvaluator = new MatchesEvaluator(getter);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package io.github.seleniumquery.wait.evaluators;

import io.github.seleniumquery.wait.WaitingBehaviorModifier;
import io.github.seleniumquery.wait.getters.Getter;
import org.apache.commons.lang3.StringUtils;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;

import java.util.List;

public class ContainsIgnoreCaseEvaluator implements Evaluator<String> {
private Getter<?> getter;

public ContainsIgnoreCaseEvaluator(Getter<?> getter) {
this.getter = getter;
}

@Override
public boolean evaluate(WebDriver driver, List<WebElement> elements, String valueToEqual) {
Object propertyGot = getter.get(driver, elements);

return propertyGot != null && StringUtils.containsIgnoreCase(propertyGot.toString(), valueToEqual);
}

@Override
public String stringFor(String valueToEqual, WaitingBehaviorModifier waitingBehaviorModifier) {
return getter.toString() + waitingBehaviorModifier + ".containsIgnoreCase(\"" + valueToEqual + "\")";
}

}