summaryrefslogtreecommitdiffstats
path: root/src/main/java/com/att/ecomp/dcae/ci/ui/utils/Locator.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/att/ecomp/dcae/ci/ui/utils/Locator.java')
-rw-r--r--src/main/java/com/att/ecomp/dcae/ci/ui/utils/Locator.java74
1 files changed, 74 insertions, 0 deletions
diff --git a/src/main/java/com/att/ecomp/dcae/ci/ui/utils/Locator.java b/src/main/java/com/att/ecomp/dcae/ci/ui/utils/Locator.java
new file mode 100644
index 0000000..7e625d5
--- /dev/null
+++ b/src/main/java/com/att/ecomp/dcae/ci/ui/utils/Locator.java
@@ -0,0 +1,74 @@
+package com.att.ecomp.dcae.ci.ui.utils;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import org.openqa.selenium.By;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.support.ui.ExpectedCondition;
+
+public class Locator {
+
+ private WebElement element;
+
+ private Locator(WebElement element) {
+ this.element = element;
+ }
+
+ public static Locator from(WebElement element) {
+ return new Locator(element);
+ }
+
+ public ExpectedCondition<WebElement> find(By by, int index) {
+ return new NestedFinder(this.element, by) {
+ @Override
+ protected WebElement predicate(List<WebElement> elements) {
+ return (elements.size() > index) ? elements.get(index) : null;
+ }
+
+ @Override
+ public String toString() {
+ return "element located by " + by;
+ }
+ };
+ }
+
+ public ExpectedCondition<WebElement> findVisible(By by, int index) {
+ return new NestedFinder(this.element, by) {
+ @Override
+ protected WebElement predicate(List<WebElement> elements) {
+ return visibleElementsOrNull(elements, index);
+ }
+
+ @Override
+ public String toString() {
+ return "visibility of element located by " + by;
+ }
+ };
+ }
+
+ public ExpectedCondition<List<WebElement>> findNoVisible(By by) {
+ return new NestedFilter(this.element, by) {
+ @Override
+ protected List<WebElement> predicate(List<WebElement> elements) {
+ WebElement visible = visibleElementsOrNull(elements, 0);
+ return (visible != null) ? null : new ArrayList<WebElement>();
+ }
+
+ @Override
+ public String toString() {
+ return "no visible elements located by " + by;
+ }
+ };
+ }
+
+ private static WebElement visibleElementsOrNull(List<WebElement> elements, int index) {
+ List<WebElement> visibles = elements.stream()
+ .filter(elem -> elem.isDisplayed())
+ .collect(Collectors.toList());
+ return (visibles.size() > index) ? visibles.get(index) : null;
+ }
+
+
+}