View Javadoc

1   package com.atlassian.pageobjects.elements.test;
2   
3   
4   import com.atlassian.pageobjects.elements.GlobalElementFinder;
5   import com.atlassian.pageobjects.elements.MultiSelectElement;
6   import com.atlassian.pageobjects.elements.Options;
7   import com.atlassian.pageobjects.elements.PageElement;
8   import com.atlassian.pageobjects.elements.PageElementFinder;
9   import com.atlassian.pageobjects.elements.SelectElement;
10  import com.atlassian.pageobjects.elements.test.pageobjects.page.ElementsPage;
11  import com.atlassian.pageobjects.elements.test.pageobjects.page.SelectElementPage;
12  import com.atlassian.pageobjects.elements.timeout.DefaultTimeouts;
13  import com.atlassian.pageobjects.elements.timeout.TimeoutType;
14  import org.junit.Before;
15  import org.junit.Test;
16  import org.openqa.selenium.By;
17  
18  import java.util.List;
19  
20  import static org.junit.Assert.assertEquals;
21  import static org.junit.Assert.assertFalse;
22  import static org.junit.Assert.assertTrue;
23  
24  public class TestGlobalElementFinder extends AbstractFileBasedServerTest
25  {
26      PageElementFinder elementFinder;
27  
28      @Before
29      public void initFinder()
30      {
31          elementFinder = product.getPageBinder().bind(GlobalElementFinder.class);
32      }
33  
34      @Test
35      public void testFind()
36      {
37          product.visit(ElementsPage.class);
38  
39          PageElement existing = elementFinder.find(By.id("test4_childList"));
40          assertTrue(existing.isPresent());
41  
42          PageElement notExisting = elementFinder.find(By.id("not-really"));
43          assertFalse(notExisting.isPresent());
44      }
45  
46      @Test
47      public void testFindCustomType()
48      {
49          product.visit(ElementsPage.class);
50  
51          SelectElement select = elementFinder.find(By.id("awesome-select"), SelectElement.class);
52          assertTrue(select.isPresent());
53          assertEquals(4, select.getAllOptions().size());
54      }
55  
56      @Test
57      public void testFindWithCustomTimeout()
58      {
59          product.visit(ElementsPage.class);
60  
61          PageElement withTimeout = elementFinder.find(By.id("test4_childList"), TimeoutType.PAGE_LOAD);
62          assertTrue(withTimeout.isPresent());
63          assertEquals(DefaultTimeouts.DEFAULT_PAGE_LOAD, withTimeout.timed().isPresent().defaultTimeout());
64      }
65  
66      @Test
67      public void testFindWithCustomTypeAndTimeout()
68      {
69          product.visit(ElementsPage.class);
70  
71          SelectElement select = elementFinder.find(By.id("awesome-select"), SelectElement.class, TimeoutType.PAGE_LOAD);
72          assertTrue(select.isPresent());
73          assertEquals(4, select.getAllOptions().size());
74          assertEquals(DefaultTimeouts.DEFAULT_PAGE_LOAD, select.timed().isPresent().defaultTimeout());
75      }
76  
77      @Test
78      public void testFindAll()
79      {
80          product.visit(ElementsPage.class);
81  
82          List<PageElement> items = elementFinder.findAll(By.className("test4_item"));
83          assertEquals(3, items.size());
84          assertEquals("Item 1", items.get(0).getText());
85          assertEquals("Item 2", items.get(1).getText());
86          assertEquals("Item 3", items.get(2).getText());
87      }
88  
89      @Test
90      public void testFindAllWithCustomClass()
91      {
92          product.visit(SelectElementPage.class);
93  
94          List<SelectElement> singleSelects = elementFinder.findAll(By.tagName("select"), SelectElement.class);
95          assertEquals(6, singleSelects.size()); // Collection will contain select and multiselect
96  
97          SelectElement singleSelect = singleSelects.get(0);
98          assertEquals("Option1_Text", singleSelect.getSelected().text());
99          singleSelect.select(Options.text("Option2_Text"));
100         assertEquals("Option2_Text", singleSelect.getSelected().text());
101 
102         List<MultiSelectElement> multiSelects = elementFinder.findAll(By.tagName("select"), MultiSelectElement.class);
103         assertEquals(6, multiSelects.size()); // Collection will contain select and multiselect
104 
105         MultiSelectElement multiSelect = multiSelects.get(3);
106         assertEquals(0, multiSelect.getSelected().size());
107         multiSelect.select(Options.text("Option2_Text"));
108         assertEquals(1, multiSelect.getSelected().size());
109     }
110 
111     @Test
112     public void testFindAllWithCustomTimeout()
113     {
114         product.visit(ElementsPage.class);
115 
116         List<PageElement> items = elementFinder.findAll(By.className("test4_item"), TimeoutType.PAGE_LOAD);
117         for (PageElement element : items)
118         {
119             assertEquals(DefaultTimeouts.DEFAULT_PAGE_LOAD, element.timed().isPresent().defaultTimeout());
120         }
121     }
122 
123     @Test
124     public void testFindAllWithCustomTypeAndTimeout()
125     {
126         product.visit(SelectElementPage.class);
127 
128         List<SelectElement> singleSelects = elementFinder.findAll(By.tagName("select"), SelectElement.class, TimeoutType.PAGE_LOAD);
129         for (PageElement select : singleSelects)
130         {
131             assertTrue(select.isPresent());
132             assertEquals(DefaultTimeouts.DEFAULT_PAGE_LOAD, select.timed().isPresent().defaultTimeout());
133         }
134     }
135 }