View Javadoc

1   package com.atlassian.pageobjects.elements;
2   
3   import com.atlassian.pageobjects.PageBinder;
4   import com.atlassian.pageobjects.binder.Init;
5   import com.atlassian.pageobjects.elements.query.TimedCondition;
6   import com.atlassian.pageobjects.elements.query.TimedQuery;
7   import com.atlassian.pageobjects.elements.query.webdriver.WebDriverQueryFactory;
8   import com.atlassian.pageobjects.elements.timeout.TimeoutType;
9   import org.openqa.selenium.Dimension;
10  import org.openqa.selenium.Point;
11  
12  import javax.annotation.Nonnull;
13  import javax.inject.Inject;
14  import java.util.Set;
15  
16  import static com.atlassian.webdriver.Elements.ATTRIBUTE_ID;
17  import static com.google.common.base.Preconditions.checkNotNull;
18  
19  /**
20   * Implementation of TimedElement based on WebDriver
21   */
22  public class WebDriverTimedElement implements TimedElement
23  {
24      @Inject
25      PageBinder pageBinder;
26  
27      private WebDriverQueryFactory queryFactory;
28      private final WebDriverLocatable locatable;
29      private final TimeoutType defaultTimeout;
30  
31      /**
32       * Create a WebDriverTimedElement with the given timeout.
33       *
34       * @param locatable locatable for the target element
35       * @param defaultTimeout default timeout of this element
36       */
37      public WebDriverTimedElement(WebDriverLocatable locatable, TimeoutType defaultTimeout)
38      {
39          this.locatable = checkNotNull(locatable);
40          this.defaultTimeout = checkNotNull(defaultTimeout);
41      }
42  
43      @Init
44      public void initialize()
45      {
46          queryFactory = pageBinder.bind(WebDriverQueryFactory.class, locatable);
47      }
48      
49      public TimedCondition isPresent()
50      {
51          return queryFactory.isPresent(defaultTimeout);
52      }
53  
54      public TimedCondition isVisible()
55      {
56          return queryFactory.isVisible(defaultTimeout);
57      }
58  
59      public TimedCondition isEnabled()
60      {
61          return queryFactory.isEnabled(defaultTimeout);
62      }
63  
64      public TimedCondition isSelected()
65      {
66          return queryFactory.isSelected(defaultTimeout);
67      }
68  
69      @Nonnull
70      @Override
71      public TimedQuery<String> getId()
72      {
73          return queryFactory.getAttribute(ATTRIBUTE_ID);
74      }
75  
76      @Nonnull
77      @Override
78      public TimedQuery<Set<String>> getCssClasses()
79      {
80          return queryFactory.getCssClasses(defaultTimeout);
81      }
82  
83      public TimedCondition hasClass(final String className)
84      {
85          return queryFactory.hasClass(className, defaultTimeout);
86      }
87  
88      public TimedQuery<String> getAttribute(final String name)
89      {
90          return queryFactory.getAttribute(name, defaultTimeout);
91      }
92  
93      public TimedCondition hasAttribute(final String name, final String value)
94      {
95          return queryFactory.hasAttribute(name, value, defaultTimeout);
96      }
97  
98      public TimedQuery<String> getText()
99      {
100         return queryFactory.getText(defaultTimeout);
101     }
102 
103     public TimedCondition hasText(String text)
104     {
105         return queryFactory.hasText(text, defaultTimeout);
106     }
107 
108     public TimedQuery<String> getTagName()
109     {
110         /* Even though the tagname can't change, the reason why we go through the same query mechanism is to
111         get the polling for finding the element */
112         return queryFactory.getTagName(defaultTimeout);
113     }
114 
115     public TimedQuery<String> getValue()
116     {
117         return queryFactory.getValue(defaultTimeout);
118     }
119 
120     public TimedCondition hasValue(String value)
121     {
122         return queryFactory.hasValue(value, defaultTimeout);
123     }
124 
125     @Override
126     public TimedQuery<Point> getLocation()
127     {
128         return queryFactory.getLocation(defaultTimeout);
129     }
130 
131     @Override
132     public TimedQuery<Dimension> getSize()
133     {
134         return queryFactory.getSize(defaultTimeout);
135     }
136 }