Skip to content

Commit a53a255

Browse files
committed
Completed the MVP ControlBase. Added the clear() method to HTMLElement and single-element controls for Input, Select and Table. Just need Button, Anchor, Link
1 parent b193a21 commit a53a255

File tree

6 files changed

+530
-20
lines changed

6 files changed

+530
-20
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,305 @@
1+
package TeamControlium.Controlium.Test.ControlTesting;
2+
3+
import TeamControlium.Controlium.ControlBase;
4+
import TeamControlium.Controlium.ElementControls.*;
5+
import TeamControlium.Controlium.HTMLElement;
6+
import TeamControlium.Controlium.ObjectMapping;
7+
import TeamControlium.Controlium.SeleniumDriver;
8+
import TeamControlium.Utilities.Logger;
9+
import TeamControlium.Utilities.TestData;
10+
import org.junit.jupiter.api.AfterEach;
11+
import org.junit.jupiter.api.BeforeEach;
12+
import org.junit.jupiter.api.Assertions;
13+
14+
import java.util.ArrayList;
15+
import java.util.List;
16+
17+
import static org.junit.jupiter.api.Assertions.assertEquals;
18+
import static org.junit.jupiter.api.Assertions.assertNotNull;
19+
20+
public class BasicControlTests {
21+
22+
private SeleniumDriver seleniumDriver=null;
23+
@BeforeEach
24+
void setUp() {
25+
TestData.setItem("Debug", "TakeScreenshot", false);
26+
TestData.setItem("Selenium", "SeleniumServerFolder", "./TestServer");
27+
if (seleniumDriver!=null) seleniumDriver.CloseDriver();
28+
seleniumDriver = new SeleniumDriver(true);
29+
}
30+
31+
@AfterEach
32+
void tearDown() {
33+
if (seleniumDriver!=null) seleniumDriver.CloseDriver();
34+
}
35+
36+
37+
// Verify we can Set on an Input control
38+
@org.junit.jupiter.api.Test
39+
void VerifyBasicFindElement() {
40+
seleniumDriver.gotoURL("https://www.thecodingguys.net/tutorials/html/html-input-element");
41+
Input inputControl=null;
42+
try {
43+
inputControl = new Input(new ObjectMapping("//input[@name='s']","Search Input textbox"));
44+
inputControl = ControlBase.setControl(seleniumDriver,inputControl);
45+
//inputControl.setText("Hello");
46+
//String readBack = inputControl.getText();
47+
}
48+
catch( Exception e) {
49+
Logger.WriteLine(Logger.LogLevels.TestInformation,"Error thrown setting on Input control: ",e.getMessage());
50+
}
51+
assertNotNull(inputControl,"Input control successfully Set on");
52+
}
53+
54+
// Verify we can select an item in a Select control using visible text
55+
@org.junit.jupiter.api.Test
56+
void VerifySelectingAnItemByTextInSelectControl() {
57+
seleniumDriver.gotoURL("https://html.com/attributes/option-selected/");
58+
Select selectControl=null;
59+
String itemToSelect="Lesser flamingo";
60+
String selectedItemText=null;
61+
try {
62+
selectControl = new Select(new ObjectMapping("//select[@name='favorites']","Example Favorites dropdown"));
63+
selectControl = ControlBase.setControl(seleniumDriver,selectControl);
64+
}
65+
catch( Exception e) {
66+
Logger.WriteLine(Logger.LogLevels.TestInformation,"Error thrown setting on Select control: ",e.getMessage());
67+
}
68+
try {
69+
selectControl.selectItemByText(itemToSelect);
70+
}
71+
catch( Exception e) {
72+
Logger.WriteLine(Logger.LogLevels.TestInformation,"Error thrown selecting item from Select control: ",e.getMessage());
73+
}
74+
try {
75+
selectedItemText = selectControl.getSelectedItemText();
76+
}
77+
catch( Exception e) {
78+
Logger.WriteLine(Logger.LogLevels.TestInformation,"Error thrown selecting item from Select control: ",e.getMessage());
79+
}
80+
assertEquals(itemToSelect,selectedItemText,"Select item and verify item text is as selected");
81+
}
82+
83+
84+
// Verify we can select an item in a Select control using the Value attribute
85+
@org.junit.jupiter.api.Test
86+
void VerifySelectingAnItemByValueInSelectControl() {
87+
seleniumDriver.gotoURL("https://html.com/attributes/option-selected/");
88+
Select selectControl=null;
89+
String itemToSelectText="Lesser flamingo";
90+
String itemToSelectValue="Lesser";
91+
String selectedItemText=null;
92+
try {
93+
selectControl = new Select(new ObjectMapping("//select[@name='favorites']","Example Favorites dropdown"));
94+
selectControl = ControlBase.setControl(seleniumDriver,selectControl);
95+
}
96+
catch( Exception e) {
97+
Logger.WriteLine(Logger.LogLevels.TestInformation,"Error thrown setting on Select control using text: ",e.getMessage());
98+
}
99+
try {
100+
selectControl.selectItemByValueAttribute(itemToSelectValue);
101+
}
102+
catch( Exception e) {
103+
Logger.WriteLine(Logger.LogLevels.TestInformation,"Error thrown selecting item from Select control using value attribute: ",e.getMessage());
104+
}
105+
try {
106+
selectedItemText = selectControl.getSelectedItemText();
107+
}
108+
catch( Exception e) {
109+
Logger.WriteLine(Logger.LogLevels.TestInformation,"Error thrown selecting item from Select control: ",e.getMessage());
110+
}
111+
assertEquals(itemToSelectText,selectedItemText,"Select item and verify item text is as selected");
112+
}
113+
114+
// Verify we can select an item in a Select control using the Value attribute
115+
@org.junit.jupiter.api.Test
116+
void VerifySelectingAnItemByIndexInSelectControl() {
117+
seleniumDriver.gotoURL("https://html.com/attributes/option-selected/");
118+
Select selectControl=null;
119+
String itemToSelectText="Lesser flamingo";
120+
int itemToSelectIndex=2;
121+
String selectedItemText=null;
122+
try {
123+
selectControl = new Select(new ObjectMapping("//select[@name='favorites']","Example Favorites dropdown"));
124+
selectControl = ControlBase.setControl(seleniumDriver,selectControl);
125+
}
126+
catch( Exception e) {
127+
Logger.WriteLine(Logger.LogLevels.TestInformation,"Error thrown setting on Select control using text: ",e.getMessage());
128+
}
129+
try {
130+
selectControl.selectItemByIndex(itemToSelectIndex);
131+
}
132+
catch( Exception e) {
133+
Logger.WriteLine(Logger.LogLevels.TestInformation,"Error thrown selecting item from Select control using index: ",e.getMessage());
134+
}
135+
try {
136+
selectedItemText = selectControl.getSelectedItemText();
137+
}
138+
catch( Exception e) {
139+
Logger.WriteLine(Logger.LogLevels.TestInformation,"Error thrown selecting item from Select control: ",e.getMessage());
140+
}
141+
assertEquals(itemToSelectText,selectedItemText,"Select item and verify item text is as selected");
142+
}
143+
144+
// Verify we can select multiple items in a Mult-Select control using visible texts
145+
@org.junit.jupiter.api.Test
146+
void VerifySelectingMultipleItemsByTextInSelectControlHasCorrectCount() {
147+
seleniumDriver.gotoURL("https://html.com/attributes/select-multiple/");
148+
Select selectControl=null;
149+
String item1ToSelect="Lesser flamingo";
150+
String item2ToSelect="Greater flamingo";
151+
String item3ToSelect="Andean flamingo";
152+
int numberOfSelectedItems=3;
153+
int selectedItemsCount=-1;
154+
try {
155+
selectControl = new Select(new ObjectMapping("//select[@multiple]","Example Favorites dropdown"));
156+
selectControl = ControlBase.setControl(seleniumDriver,selectControl);
157+
}
158+
catch( Exception e) {
159+
Logger.WriteLine(Logger.LogLevels.TestInformation,"Error thrown setting on Select control: ",e.getMessage());
160+
}
161+
try {
162+
selectControl.selectItemByText(item1ToSelect);
163+
selectControl.selectItemByText(item2ToSelect);
164+
selectControl.selectItemByText(item3ToSelect);
165+
}
166+
catch( Exception e) {
167+
Logger.WriteLine(Logger.LogLevels.TestInformation,"Error thrown selecting item from Select control: ",e.getMessage());
168+
}
169+
try {
170+
selectedItemsCount = selectControl.getSelectedItemTextsCount();
171+
}
172+
catch( Exception e) {
173+
Logger.WriteLine(Logger.LogLevels.TestInformation,"Error thrown selecting item from Select control: ",e.getMessage());
174+
}
175+
assertEquals(numberOfSelectedItems,selectedItemsCount,"Select multiple items and verify selected item count is correct");
176+
}
177+
178+
179+
// Verify we can select multiple items in a Mult-Select control using visible texts
180+
@org.junit.jupiter.api.Test
181+
void VerifySelectingMultipleItemsByTextInSelectControlHasCorrectTexts() {
182+
seleniumDriver.gotoURL("https://html.com/attributes/select-multiple/");
183+
Select selectControl=null;
184+
String item1ToSelect="Lesser flamingo";
185+
String item2ToSelect="Greater flamingo";
186+
String item3ToSelect="Andean flamingo";
187+
String item1NotSelected="American flamingo";
188+
String item2NotSelected="Chilean flamingo";
189+
String item3NotSelected="James's flamingo";
190+
int numberOfSelectedItems=3;
191+
List<String> texts = new ArrayList<>();
192+
try {
193+
selectControl = new Select(new ObjectMapping("//select[@multiple]","Example Favorites dropdown"));
194+
selectControl = ControlBase.setControl(seleniumDriver,selectControl);
195+
}
196+
catch( Exception e) {
197+
Logger.WriteLine(Logger.LogLevels.TestInformation,"Error thrown setting on Select control: ",e.getMessage());
198+
}
199+
try {
200+
selectControl.selectItemByText(item1ToSelect);
201+
selectControl.selectItemByText(item2ToSelect);
202+
selectControl.selectItemByText(item3ToSelect);
203+
}
204+
catch( Exception e) {
205+
Logger.WriteLine(Logger.LogLevels.TestInformation,"Error thrown selecting item from Select control: ",e.getMessage());
206+
}
207+
try {
208+
texts = selectControl.getAllSelectedItemTexts();
209+
}
210+
catch( Exception e) {
211+
Logger.WriteLine(Logger.LogLevels.TestInformation,"Error thrown selecting item from Select control: ",e.getMessage());
212+
}
213+
assertEquals(numberOfSelectedItems,texts.size(),"Select multiple items and verify selected item count is correct");
214+
assertEquals(1,texts.stream().filter(text -> (item1ToSelect.equals(text))).count(),"Select multiple items has item 1 selected ok");
215+
assertEquals(1,texts.stream().filter(text -> (item2ToSelect.equals(text))).count(),"Select multiple items has item 2 selected ok");
216+
assertEquals(1,texts.stream().filter(text -> (item3ToSelect.equals(text))).count(),"Select multiple items has item 3 selected ok");
217+
assertEquals(0,texts.stream().filter(text -> (item1NotSelected.equals(text))).count(),"Select multiple items has non-selected item 1 not selected ok");
218+
assertEquals(0,texts.stream().filter(text -> (item2NotSelected.equals(text))).count(),"Select multiple items has non-selected item 2 not selected ok");
219+
assertEquals(0,texts.stream().filter(text -> (item3NotSelected.equals(text))).count(),"Select multiple items has non-selected item 3 not selected ok");
220+
}
221+
222+
223+
// Verify controlBeingSet on SetControl
224+
@org.junit.jupiter.api.Test
225+
void VerifySelectResetControl() {
226+
seleniumDriver.gotoURL("https://html.com/attributes/select-multiple/");
227+
Select selectControl1=null;
228+
Select selectControl2=null;
229+
String item1ToSelect="Lesser flamingo";
230+
String item2ToSelect="Greater flamingo";
231+
String item3ToSelect="Andean flamingo";
232+
String item1SecondSelect="American flamingo";
233+
String item2SecondSelect="Andean flamingo";
234+
String item1NotSelected="Chilean flamingo";
235+
int numberOfSelectedItems=2;
236+
List<String> texts = new ArrayList<>();
237+
try {
238+
selectControl1 = new Select(new ObjectMapping("//select[@multiple]","Example Favorites dropdown"));
239+
selectControl1 = ControlBase.setControl(seleniumDriver,selectControl1);
240+
}
241+
catch( Exception e) {
242+
Logger.WriteLine(Logger.LogLevels.TestInformation,"Error thrown setting on Select control: ",e.getMessage());
243+
}
244+
try {
245+
selectControl1.selectItemByText(item1ToSelect);
246+
selectControl1.selectItemByText(item2ToSelect);
247+
selectControl1.selectItemByText(item3ToSelect);
248+
}
249+
catch( Exception e) {
250+
Logger.WriteLine(Logger.LogLevels.TestInformation,"Error thrown selecting item from Select control: ",e.getMessage());
251+
}
252+
try {
253+
selectControl2 = new Select(new ObjectMapping("//select[@multiple]","Example Favorites dropdown"),true);
254+
selectControl2 = ControlBase.setControl(seleniumDriver,selectControl2);
255+
256+
}
257+
catch( Exception e) {
258+
Logger.WriteLine(Logger.LogLevels.TestInformation,"Error thrown selecting item from Select control: ",e.getMessage());
259+
}
260+
try {
261+
selectControl1.selectItemByText(item1SecondSelect);
262+
selectControl1.selectItemByText(item2SecondSelect);
263+
}
264+
catch( Exception e) {
265+
Logger.WriteLine(Logger.LogLevels.TestInformation,"Error thrown selecting item from Select control: ",e.getMessage());
266+
}
267+
assertEquals(numberOfSelectedItems,texts.size(),"Select multiple items and verify selected item count is correct");
268+
assertEquals(1,texts.stream().filter(text -> (item1SecondSelect.equals(text))).count(),"Select multiple items has item 1 selected ok");
269+
assertEquals(1,texts.stream().filter(text -> (item2SecondSelect.equals(text))).count(),"Select multiple items has item 2 selected ok");
270+
assertEquals(0,texts.stream().filter(text -> (item1ToSelect.equals(text))).count(),"Select multiple items has non-selected item 1 not selected ok");
271+
assertEquals(0,texts.stream().filter(text -> (item2ToSelect.equals(text))).count(),"Select multiple items has non-selected item 2 not selected ok");
272+
assertEquals(0,texts.stream().filter(text -> (item1NotSelected.equals(text))).count(),"Select multiple items has non-selected item 2 not selected ok");
273+
}
274+
275+
// Verify we can select a basic table cell
276+
@org.junit.jupiter.api.Test
277+
void VerifyBasicFindTableCell() {
278+
seleniumDriver.gotoURL("https://html.com/tables/");
279+
int row = 3;
280+
int column = 2;
281+
Table tableControl=null;
282+
String cellContents=null;
283+
try {
284+
tableControl = new Table("Caption","A complex table");
285+
tableControl = ControlBase.setControl(seleniumDriver,tableControl);
286+
}
287+
catch( Exception e) {
288+
Logger.WriteLine(Logger.LogLevels.TestInformation,"Error thrown setting on Table control: %s ",e.getMessage());
289+
}
290+
try {
291+
Table.Cell cell = tableControl.getCell(row,column);
292+
cellContents = cell.getText();
293+
}
294+
catch( Exception e) {
295+
Logger.WriteLine(Logger.LogLevels.TestInformation,"Error thrown getting [%s] table cell (Row [%d], Column [%d]): %s",
296+
tableControl.getMapping().getFriendlyName(),
297+
row,
298+
column,
299+
e.getMessage());
300+
}
301+
assertEquals("0.01",cellContents,"Table cell contents correctly read");
302+
}
303+
304+
}
305+

0 commit comments

Comments
 (0)