View Javadoc

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   * Condition to wait for an element's visibility.
12   *
13   * @since 2.0
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  }