View Javadoc

1   package com.atlassian.pageobjects.components.aui;
2   
3   import com.atlassian.pageobjects.PageBinder;
4   import com.atlassian.pageobjects.binder.Init;
5   import com.atlassian.pageobjects.components.ActivatedComponent;
6   import com.atlassian.pageobjects.elements.PageElement;
7   import com.atlassian.pageobjects.elements.PageElementFinder;
8   import com.atlassian.pageobjects.elements.query.Poller;
9   import org.openqa.selenium.By;
10  
11  import javax.inject.Inject;
12  import java.util.ArrayList;
13  import java.util.List;
14  
15  /**
16   * Represents a DropDown built via AUI.
17   *
18   * This is an example of a reusable components.
19   */
20  public class AuiDropDownMenu implements ActivatedComponent<AuiDropDownMenu>
21  {
22      @Inject
23      protected PageBinder pageBinder;
24  
25      @Inject
26      protected PageElementFinder elementFinder;
27      
28      private final By locator;
29      private PageElement rootElement;
30      private PageElement triggerElement;
31      private PageElement viewElement;
32  
33      public AuiDropDownMenu(By locator)
34      {
35          this.locator = locator;
36      }
37  
38      @Init
39      public void initialize()
40      {
41          rootElement = elementFinder.find(locator);
42          triggerElement = rootElement.find(By.className("aui-dd-trigger"));
43          viewElement = rootElement.find(By.className("aui-dropdown"));
44      }
45  
46      public PageElement getTrigger()
47      {
48          return triggerElement;
49      }
50  
51      public PageElement getView()
52      {
53          return viewElement;
54      }
55  
56      public AuiDropDownMenu open()
57      {
58          if(!isOpen())
59          {
60              triggerElement.click();
61              Poller.waitUntilTrue(viewElement.timed().isVisible());
62          }
63          return this;
64      }
65  
66      public AuiDropDownMenu close()
67      {
68          if(isOpen())
69          {
70              triggerElement.click();
71              Poller.waitUntilTrue(viewElement.timed().isVisible());
72          }
73          return this;
74      }
75  
76      public boolean isOpen()
77      {
78          return viewElement.isVisible();
79      }
80  
81      public List<String> getItems()
82      {
83          List<String> items = new ArrayList<String>();
84          for(PageElement e: viewElement.findAll(By.tagName("li")))
85          {
86              items.add(e.getText());
87          }
88  
89          return items;
90      }
91  }