Skip to content

Commit d470df3

Browse files
authored
Merge pull request #179 from renanleandrof/master
Adding evaluator ContainsIgnoreCase
2 parents 7740444 + df4ff29 commit d470df3

3 files changed

Lines changed: 47 additions & 4 deletions

File tree

src/main/java/io/github/seleniumquery/SeleniumQueryWaitEvaluateUntil.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,16 @@ public interface SeleniumQueryWaitEvaluateUntil<T> {
4747
*/
4848
SeleniumQueryWaitAndOrThen contains(String string);
4949

50+
/**
51+
* Tests if the result of the preceding function contains the given argument ignoring text case.
52+
*
53+
* @param string The string the function call result must contain.
54+
* @return An element that allows chaining of further waiting conditions or calling regular functions.
55+
*
56+
* @since 0.18.0
57+
*/
58+
SeleniumQueryWaitAndOrThen containsIgnoreCase(String string);
59+
5060
/**
5161
* Tests if the result of the preceding function matches the given regex.
5262
*

src/main/java/io/github/seleniumquery/wait/EvaluateUntil.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,7 @@
1919
import io.github.seleniumquery.SeleniumQueryObject;
2020
import io.github.seleniumquery.SeleniumQueryWaitAndOrThen;
2121
import io.github.seleniumquery.SeleniumQueryWaitEvaluateUntil;
22-
import io.github.seleniumquery.wait.evaluators.ContainsEvaluator;
23-
import io.github.seleniumquery.wait.evaluators.EqualsEvaluator;
24-
import io.github.seleniumquery.wait.evaluators.Evaluator;
25-
import io.github.seleniumquery.wait.evaluators.MatchesEvaluator;
22+
import io.github.seleniumquery.wait.evaluators.*;
2623
import io.github.seleniumquery.wait.evaluators.comparison.GreaterThanEvaluator;
2724
import io.github.seleniumquery.wait.evaluators.comparison.LessThanEvaluator;
2825
import io.github.seleniumquery.wait.getters.Getter;
@@ -66,6 +63,12 @@ public SeleniumQueryWaitAndOrThen contains(String string) {
6663
return new AndOrThen(fluentWait.waitUntil(containsEvaluator, string, seleniumQueryObject, this.negated));
6764
}
6865

66+
@Override
67+
public SeleniumQueryWaitAndOrThen containsIgnoreCase(String string) {
68+
Evaluator<String> containsEvaluator = new ContainsIgnoreCaseEvaluator(getter);
69+
return new AndOrThen(fluentWait.waitUntil(containsEvaluator, string, seleniumQueryObject, this.negated));
70+
}
71+
6972
@Override
7073
public SeleniumQueryWaitAndOrThen matches(String regex) {
7174
Evaluator<String> matchesEvaluator = new MatchesEvaluator(getter);
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package io.github.seleniumquery.wait.evaluators;
2+
3+
import io.github.seleniumquery.wait.WaitingBehaviorModifier;
4+
import io.github.seleniumquery.wait.getters.Getter;
5+
import org.apache.commons.lang3.StringUtils;
6+
import org.openqa.selenium.WebDriver;
7+
import org.openqa.selenium.WebElement;
8+
9+
import java.util.List;
10+
11+
public class ContainsIgnoreCaseEvaluator implements Evaluator<String> {
12+
private Getter<?> getter;
13+
14+
public ContainsIgnoreCaseEvaluator(Getter<?> getter) {
15+
this.getter = getter;
16+
}
17+
18+
@Override
19+
public boolean evaluate(WebDriver driver, List<WebElement> elements, String valueToEqual) {
20+
Object propertyGot = getter.get(driver, elements);
21+
22+
return propertyGot != null && StringUtils.containsIgnoreCase(propertyGot.toString(), valueToEqual);
23+
}
24+
25+
@Override
26+
public String stringFor(String valueToEqual, WaitingBehaviorModifier waitingBehaviorModifier) {
27+
return getter.toString() + waitingBehaviorModifier + ".containsIgnoreCase(\"" + valueToEqual + "\")";
28+
}
29+
30+
}

0 commit comments

Comments
 (0)