View Javadoc

1   package com.atlassian.pageobjects.elements.test;
2   
3   import com.atlassian.pageobjects.elements.GlobalElementFinder;
4   import com.atlassian.pageobjects.elements.MultiSelectElement;
5   import com.atlassian.pageobjects.elements.PageElement;
6   import com.atlassian.pageobjects.elements.PageElementFinder;
7   import com.atlassian.pageobjects.elements.SelectElement;
8   import com.atlassian.pageobjects.elements.test.pageobjects.page.ElementsPage;
9   import com.atlassian.pageobjects.elements.timeout.DefaultTimeouts;
10  import com.atlassian.pageobjects.elements.timeout.TimeoutType;
11  import org.junit.Before;
12  import org.junit.Test;
13  import org.openqa.selenium.By;
14  
15  import java.util.List;
16  
17  import static org.junit.Assert.assertEquals;
18  import static org.junit.Assert.assertFalse;
19  import static org.junit.Assert.assertTrue;
20  
21  public class TestPageElementAsElementFinder extends AbstractPageElementBrowserTest
22  {
23      private PageElementFinder elementFinder;
24  
25      @Before
26      public void initFinder()
27      {
28          elementFinder = product.getPageBinder().bind(GlobalElementFinder.class);
29      }
30  
31      @Test
32      public void testFind()
33      {
34          product.visit(ElementsPage.class);
35  
36          PageElement parent = elementFinder.find(By.id("test4_childList"));
37          PageElement existingChild = parent.find(By.tagName("ul"));
38          assertTrue(existingChild.isPresent());
39          assertEquals("test4_leafList", existingChild.getAttribute("id"));
40  
41          PageElement notExistingChild = parent.find(By.tagName("a"));
42          assertFalse(notExistingChild.isPresent());
43      }
44  
45      @Test
46      public void testFindCustomType()
47      {
48          product.visit(ElementsPage.class);
49  
50          PageElement parent = elementFinder.find(By.id("select-parent-div"));
51          SelectElement select = parent.find(By.className("nested-select-marker"), SelectElement.class);
52          assertTrue(select.isPresent());
53          assertEquals("nested-select", select.getAttribute("id"));
54          assertEquals(4, select.getAllOptions().size());
55  
56          MultiSelectElement multiSelect = parent.find(By.className("nested-select-marker"), MultiSelectElement.class);
57          assertTrue(multiSelect.isPresent());
58          assertEquals("nested-select", multiSelect.getAttribute("id"));
59          assertEquals(4, multiSelect.getAllOptions().size());
60      }
61  
62      @Test
63      public void testFindWithCustomTimeout()
64      {
65          product.visit(ElementsPage.class);
66  
67          PageElement parent = elementFinder.find(By.id("test4_childList"));
68          PageElement child = parent.find(By.tagName("ul"), TimeoutType.PAGE_LOAD);
69          assertTrue(child.isPresent());
70          assertEquals(DefaultTimeouts.DEFAULT_PAGE_LOAD, child.timed().isPresent().defaultTimeout());
71      }
72  
73      @Test
74      public void testFindWithCustomTypeAndTimeout()
75      {
76          product.visit(ElementsPage.class);
77  
78          PageElement parent = elementFinder.find(By.id("select-parent-div"));
79          SelectElement select = parent.find(By.className("nested-select-marker"), SelectElement.class, TimeoutType.PAGE_LOAD);
80          assertTrue(select.isPresent());
81          assertEquals("nested-select", select.getAttribute("id"));
82          assertEquals(4, select.getAllOptions().size());
83          assertEquals(DefaultTimeouts.DEFAULT_PAGE_LOAD, select.timed().isPresent().defaultTimeout());
84      }
85  
86      @Test
87      public void testFindAll()
88      {
89          product.visit(ElementsPage.class);
90  
91          PageElement parent = elementFinder.find(By.id("test4_childList"));
92          List<PageElement> items = parent.findAll(By.className("test4_item"));
93          assertEquals(3, items.size());
94          assertEquals("Item 1", items.get(0).getText());
95          assertEquals("Item 2", items.get(1).getText());
96          assertEquals("Item 3", items.get(2).getText());
97      }
98  
99      @Test
100     public void testFindAllWithCustomType()
101     {
102         product.visit(ElementsPage.class);
103 
104         PageElement parent = elementFinder.find(By.id("select-parent-div"));
105         List<SelectElement> singleSelects = parent.findAll(By.tagName("select"), SelectElement.class);
106 
107         assertEquals(2, singleSelects.size());
108         assertTrue(singleSelects.get(0).isPresent());
109         assertEquals("nested-select", singleSelects.get(0).getAttribute("id"));
110         assertTrue(singleSelects.get(1).isPresent());
111         assertEquals("nested-select2", singleSelects.get(1).getAttribute("id"));
112 
113         List<MultiSelectElement> multiSelects = parent.findAll(By.tagName("select"), MultiSelectElement.class);
114 
115         assertEquals(2, multiSelects.size());
116         assertTrue(multiSelects.get(0).isPresent());
117         assertEquals("nested-select", multiSelects.get(0).getAttribute("id"));
118         assertTrue(multiSelects.get(1).isPresent());
119         assertEquals("nested-select2", multiSelects.get(1).getAttribute("id"));
120 
121         // TODO checkboxes should be tested as well
122     }
123 
124     @Test
125     public void testFindAllWithCustomTimeout()
126     {
127         product.visit(ElementsPage.class);
128 
129         PageElement parent = elementFinder.find(By.id("test4_childList"));
130         List<PageElement> items = parent.findAll(By.className("li"), TimeoutType.PAGE_LOAD);
131         for (PageElement element : items)
132         {
133             assertEquals(DefaultTimeouts.DEFAULT_PAGE_LOAD, element.timed().isPresent().defaultTimeout());
134         }
135     }
136 
137     @Test
138     public void testFindAllWithCustomTypeAndTimeout()
139     {
140         product.visit(ElementsPage.class);
141 
142         PageElement parent = elementFinder.find(By.id("select-parent-div"));
143         List<SelectElement> singleSelects = parent.findAll(By.tagName("select"), SelectElement.class, TimeoutType.PAGE_LOAD);
144         for (PageElement select : singleSelects)
145         {
146             assertTrue(select.isPresent());
147             assertEquals(DefaultTimeouts.DEFAULT_PAGE_LOAD, select.timed().isPresent().defaultTimeout());
148         }
149     }
150 }