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