1 package com.atlassian.webdriver.utils.element;
2
3 import com.atlassian.webdriver.utils.Check;
4 import org.apache.commons.lang.Validate;
5 import org.openqa.selenium.By;
6 import org.openqa.selenium.SearchContext;
7 import org.openqa.selenium.WebDriver;
8 import org.openqa.selenium.support.ui.ExpectedCondition;
9
10
11
12
13
14
15 abstract class ElementVisibilityCondition implements ExpectedCondition<Boolean>
16 {
17
18 enum Visibility
19 {
20 VISIBLE,
21 NOTVISIBLE
22 }
23
24 private final By by;
25 private final SearchContext at;
26 private final Visibility visibility;
27
28 ElementVisibilityCondition(By by, Visibility visibility)
29 {
30 this(by, null, visibility);
31 }
32
33 ElementVisibilityCondition(By by, SearchContext el, Visibility visibility)
34 {
35 Validate.notNull(by, "by cannot be null.");
36
37 this.by = by;
38 this.at = el;
39 this.visibility = visibility;
40 }
41
42 final public Boolean apply(WebDriver webDriver)
43 {
44 if (visibility.equals(Visibility.VISIBLE))
45 {
46 return Check.elementIsVisible(by, at == null ? webDriver : at);
47 }
48 else
49 {
50 return !Check.elementIsVisible(by, at == null ? webDriver : at);
51 }
52 }
53
54 @Override
55 public String toString() {
56 return String.format("Condition: [state=%s,what=%s,where=%s]", visibility, by, at);
57 }
58 }