page-object 0.2.4 → 0.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. data/ChangeLog +26 -2
  2. data/features/button.feature +5 -0
  3. data/features/check_box.feature +4 -2
  4. data/features/div.feature +4 -0
  5. data/features/form.feature +3 -0
  6. data/features/hidden_field.feature +4 -0
  7. data/features/image.feature +5 -0
  8. data/features/link.feature +4 -0
  9. data/features/list_item.feature +4 -0
  10. data/features/ordered_list.feature +5 -0
  11. data/features/radio_button.feature +4 -0
  12. data/features/select_list.feature +5 -1
  13. data/features/span.feature +4 -0
  14. data/features/step_definitions/accessor_steps.rb +0 -266
  15. data/features/step_definitions/button_steps.rb +23 -0
  16. data/features/step_definitions/check_box_steps.rb +31 -0
  17. data/features/step_definitions/div_steps.rb +15 -0
  18. data/features/step_definitions/element_steps.rb +0 -4
  19. data/features/step_definitions/form_steps.rb +15 -0
  20. data/features/step_definitions/hidden_field_steps.rb +23 -0
  21. data/features/step_definitions/image_steps.rb +23 -0
  22. data/features/step_definitions/link_steps.rb +20 -0
  23. data/features/step_definitions/list_item_steps.rb +15 -0
  24. data/features/step_definitions/ordered_list_steps.rb +15 -0
  25. data/features/step_definitions/radio_button_steps.rb +23 -0
  26. data/features/step_definitions/select_list_steps.rb +28 -0
  27. data/features/step_definitions/span_steps.rb +15 -0
  28. data/features/step_definitions/table_cell_steps.rb +11 -0
  29. data/features/step_definitions/table_steps.rb +12 -0
  30. data/features/step_definitions/text_area_steps.rb +27 -0
  31. data/features/step_definitions/text_field_steps.rb +27 -0
  32. data/features/step_definitions/unordered_list_steps.rb +16 -0
  33. data/features/table.feature +4 -0
  34. data/features/table_cell.feature +3 -0
  35. data/features/text_area.feature +4 -0
  36. data/features/text_field.feature +4 -0
  37. data/features/unordered_list.feature +5 -0
  38. data/lib/page-object.rb +8 -3
  39. data/lib/page-object/element_locators.rb +277 -0
  40. data/lib/page-object/platforms/selenium/page_object.rb +6 -5
  41. data/lib/page-object/platforms/watir/page_object.rb +2 -2
  42. data/lib/page-object/platforms/watir/text_area.rb +1 -1
  43. data/lib/page-object/version.rb +1 -1
  44. data/page-object.gemspec +2 -2
  45. data/spec/page-object/element_locators_spec.rb +113 -0
  46. data/spec/page-object/page-object_spec.rb +4 -4
  47. metadata +40 -5
data/ChangeLog CHANGED
@@ -1,5 +1,29 @@
1
- === Version 0.2.4 / 2011-08-80
2
- * Ehnancements
1
+ === Version 0.2.5 / 2011-08-19
2
+ * Enhancements
3
+ * #attach_to_window takes an optional block - will return to calling window after block executes
4
+ * Added the following instance methods to PageObject via ElementLocators
5
+ * #button_element
6
+ * #text_field_element
7
+ * #hidden_field_element
8
+ * #text_area_element
9
+ * #select_list_element
10
+ * #link_element
11
+ * #checkbox_element
12
+ * #radio_button_element
13
+ * #div_element
14
+ * #span_element
15
+ * #table_element
16
+ * #cell_element
17
+ * #image_element
18
+ * #form_element
19
+ * #list_item_element
20
+ * #unordered_list_element
21
+ * #ordered_list_element
22
+ * Updated to use selenium-webdriver 2.4.0
23
+ * Updated to use watir-webdriver 0.3.2
24
+
25
+ === Version 0.2.4 / 2011-08-08
26
+ * Enhancements
3
27
  * Can now find span by :text
4
28
  * Can now find button by :value
5
29
  * Added #forward and #back methods to PageObject
@@ -45,3 +45,8 @@ Feature: Button
45
45
  | param1 | param2 |
46
46
  | class | index |
47
47
  | name | index |
48
+
49
+ Scenario: Finding a button dynamically
50
+ When I find a button while the script is executing
51
+ Then I should be able to click the button element
52
+
@@ -6,7 +6,7 @@ Feature: Check Box
6
6
  Background:
7
7
  Given I am on the static elements page
8
8
 
9
- Scenario: Selecting an element on the select list
9
+ Scenario: Selecting a check box
10
10
  When I select the First check box
11
11
  Then the First check box should be selected
12
12
  When I unselect the First check box
@@ -33,9 +33,11 @@ Feature: Check Box
33
33
  | class | index |
34
34
  | name | index |
35
35
 
36
-
37
36
  Scenario: Retrieve a CheckBox
38
37
  When I retrieve a check box element
39
38
  Then I should know it exists
40
39
  And I should know it is visible
41
40
 
41
+ Scenario: Finding a check box dynamically
42
+ When I select the first check box while the script is executing
43
+ Then the First check box should be selected
@@ -36,3 +36,7 @@ Feature: Div
36
36
  | param1 | param2 |
37
37
  | class | index |
38
38
  | name | index |
39
+
40
+ Scenario: Finding a div dynamically
41
+ When I get the text from a div while the script is executing
42
+ Then the text should be "page-object rocks!"
@@ -27,3 +27,6 @@ Feature: Form
27
27
  | class | index |
28
28
  | name | index |
29
29
 
30
+ Scenario: Finding a form dynamically
31
+ When I locate a form while the script is executing
32
+ Then I should be able to submit the form
@@ -30,3 +30,7 @@ Feature: Hidden Fields
30
30
  | param1 | param2 |
31
31
  | class | index |
32
32
  | name | index |
33
+
34
+ Scenario: Finding a hidden field dynamically
35
+ When I find a hidden field while the script is executing
36
+ Then hidden field element should contains "12345"
@@ -30,3 +30,8 @@ Feature: Image
30
30
  | param1 | param2 |
31
31
  | class | index |
32
32
  | name | index |
33
+
34
+ Scenario: Finding an image dynamically
35
+ When I get the image element while the script is executing
36
+ Then the image should be "106" pixels wide
37
+ And the image should be "106" pixels tall
@@ -36,3 +36,7 @@ Feature: Links
36
36
  When I retrieve a link element
37
37
  Then I should know it exists
38
38
  And I should know it is visible
39
+
40
+ Scenario: Finding a link dynamically
41
+ When I select a link while the script is executing
42
+ Then the page should contain the text "Success"
@@ -27,3 +27,7 @@ Feature: List item
27
27
  | param1 | param2 |
28
28
  | class | index |
29
29
  | name | index |
30
+
31
+ Scenario: Finding a list item dynamically
32
+ When I search for the list item while the script is executing
33
+ Then the text should be "Item One"
@@ -31,3 +31,8 @@ Feature: Ordered list
31
31
  | param1 | param2 |
32
32
  | class | index |
33
33
  | name | index |
34
+
35
+ Scenario: Finding a ordered list dynamically
36
+ When I search for the ordered list while the script is executing
37
+ And I get the first item from the list
38
+ Then the list items text should be "Number One"
@@ -39,3 +39,7 @@ Feature: Radio Buttons
39
39
  When I retrieve a radio button
40
40
  Then I should know it exists
41
41
  And I should know it is visible
42
+
43
+ Scenario: Finding a radio button dynamically
44
+ When I select the radio button while the script is executing
45
+ Then the "Milk" radio button should be selected
@@ -23,7 +23,7 @@ Feature: Select List
23
23
  | xpath |
24
24
  | index |
25
25
 
26
- Scenario Outline: Locating a hidden field using multiple parameters
26
+ Scenario Outline: Locating a select list using multiple parameters
27
27
  When I search for the select list by "<param1>" and "<param2>"
28
28
  Then I should be able to select "Test 2"
29
29
  And the value for the selected item should be "option2"
@@ -38,3 +38,7 @@ Feature: Select List
38
38
  Then option "1" should contain "Test 1"
39
39
  And option "2" should contain "Test 2"
40
40
  And each option should contain "Test"
41
+
42
+ Scenario: Finding a select list dynamically
43
+ When I find a select list while the script is executing
44
+ Then I should be able to select "Test 2" from the list
@@ -28,3 +28,7 @@ Feature: Span
28
28
  | param1 | param2 |
29
29
  | class | index |
30
30
  | name | index |
31
+
32
+ Scenario: Finding a span dynamically
33
+ When I get the text from a span while the script is executing
34
+ Then the text should be "My alert"
@@ -1,290 +1,24 @@
1
- When /^I type "([^\"]*)" into the text field$/ do |text|
2
- @page.text_field_id = text
3
- end
4
-
5
- Then /^the text field should contain "([^\"]*)"$/ do |expected_text|
6
- @page.text_field_id.should == expected_text
7
- end
8
-
9
- When /^I search for the text field by "([^\"]*)"$/ do |how|
10
- @how = how
11
- end
12
-
13
- When /^I search for the text field by "([^"]*)" and "([^"]*)"$/ do |param1, param2|
14
- @how = "#{param1}_#{param2}"
15
- end
16
-
17
- Then /^I should be able to type "([^\"]*)" into the field$/ do |value|
18
- @page.send "text_field_#{@how}=".to_sym, value
19
- end
20
-
21
- When /^I type "([^\"]*)" into the text area$/ do |text|
22
- @page.text_area_id = text
23
- end
24
-
25
- Then /^the text area should contain "([^\"]*)"$/ do |expected_text|
26
- @page.text_area_id.should == expected_text
27
- end
28
-
29
- When /^I search for the text area by "([^\"]*)"$/ do |how|
30
- @how = how
31
- end
32
-
33
- When /^I search for the text area by "([^"]*)" and "([^"]*)"$/ do |param1, param2|
34
- @how = "#{param1}_#{param2}"
35
- end
36
-
37
- Then /^I should be able to type "([^\"]*)" into the area$/ do |value|
38
- @page.send "text_area_#{@how}=".to_sym, value
39
- end
40
-
41
- When /^I select the link labeled "([^\"]*)"$/ do |text|
42
- @page.google_search_id
43
- end
44
-
45
- When /^I search for the link by "([^\"]*)"$/ do |how|
46
- @how = how
47
- end
48
-
49
- Then /^I should be able to select the link$/ do
50
- @page.send "google_search_#{@how}".to_sym
51
- end
52
-
53
- When /^I select "([^\"]*)" from the select list$/ do |text|
54
- @page.sel_list_id = text
55
- end
56
-
57
1
  Then /^the current item should be "([^\"]*)"$/ do |expected_text|
58
2
  @page.sel_list_id.should == expected_text
59
3
  end
60
4
 
61
- When /^I search for the select list by "([^\"]*)"$/ do |how|
62
- @how = how
63
- end
64
-
65
- When /^I search for the select list by "([^"]*)" and "([^"]*)"$/ do |param1, param2|
66
- @how = "#{param1}_#{param2}"
67
- end
68
-
69
- Then /^I should be able to select "([^\"]*)"$/ do |value|
70
- @page.send "sel_list_#{@how}=".to_sym, value
71
- end
72
-
73
- Then /^the value for the selected item should be "([^\"]*)"$/ do |value|
74
- result = @page.send "sel_list_#{@how}".to_sym
75
- result.should == value
76
- end
77
-
78
- When /^I select the First check box$/ do
79
- @page.check_cb_id
80
- end
81
-
82
- Then /^the First check box should be selected$/ do
83
- @page.cb_id_checked?.should be_true
84
- end
85
-
86
- When /^I unselect the First check box$/ do
87
- @page.uncheck_cb_id
88
- end
89
-
90
- Then /^the First check box should not be selected$/ do
91
- @page.cb_id_checked?.should be_false
92
- end
93
-
94
- When /^I search for the check box by "([^\"]*)"$/ do |how|
95
- @how = how
96
- end
97
-
98
- When /^I search for the check box by "([^"]*)" and "([^"]*)"$/ do |param1, param2|
99
- @how = "#{param1}_#{param2}"
100
- end
101
-
102
- Then /^I should be able to check the check box$/ do
103
- @page.send "check_cb_#{@how}".to_sym
104
- end
105
-
106
- When /^I select the "([^\"]*)" radio button$/ do |how|
107
- @page.send "select_#{how.downcase}_id".to_sym
108
- end
109
-
110
- Then /^the "([^\"]*)" radio button should be selected$/ do |how|
111
- @page.send "#{how.downcase}_id_selected?".to_sym
112
- end
113
-
114
- When /^I search for the radio button by "([^\"]*)"$/ do |how|
115
- @how = how
116
- end
117
-
118
- When /^I search for the radio button by "([^"]*)" and "([^"]*)"$/ do |param1, param2|
119
- @how = "#{param1}_#{param2}"
120
- end
121
-
122
- When /^I select the radio button$/ do
123
- @page.send "select_milk_#{@how}".to_sym
124
- end
125
-
126
- When /^I get the text from the div$/ do
127
- @text = @page.div_id
128
- end
129
-
130
5
  Then /^the text should be "([^\"]*)"$/ do |expected_text|
131
6
  @text.should == expected_text
132
7
  end
133
8
 
134
- When /^I search for the div by "([^\"]*)"$/ do |how|
135
- @text = @page.send "div_#{how}".to_sym
136
- end
137
-
138
- When /^I search for the div by "([^"]*)" and "([^"]*)"$/ do |param1, param2|
139
- @text = @page.send "div_#{param1}_#{param2}".to_sym
140
- end
141
-
142
- When /^I get the text from the span$/ do
143
- @text = @page.span_id
144
- end
145
-
146
- When /^I search for the span by "([^\"]*)"$/ do |how|
147
- @text = @page.send "span_#{how}".to_sym
148
- end
149
-
150
- When /^I search for the span by "([^"]*)" and "([^"]*)"$/ do |param1, param2|
151
- @text = @page.send "span_#{param1}_#{param2}".to_sym
152
- end
153
-
154
- When /^I click the button$/ do
155
- @page.button_id
156
- end
157
-
158
9
  Then /^I should be on the success page$/ do
159
10
  @page.text.should include 'Success'
160
11
  @page.title.should == 'Success'
161
12
  end
162
13
 
163
- When /^I search for the button by "([^\"]*)"$/ do |how|
164
- @how = how
165
- end
166
-
167
- When /^I search for the button by "([^"]*)" and "([^"]*)"$/ do |param1, param2|
168
- @how = "#{param1}_#{param2}"
169
- end
170
-
171
- Then /^I should be able to click the button$/ do
172
- @page.send "button_#{@how}"
173
- end
174
-
175
- When /^I search for the table cell by "([^\"]*)"$/ do |how|
176
- @cell_data = @page.send "cell_#{how}"
177
- end
178
-
179
- When /^I retrieve a table cell element by "([^"]*)" and "([^"]*)"$/ do |param1, param2|
180
- @cell_data = @page.send "cell_#{param1}_#{param2}"
181
- end
182
-
183
- When /^I retrieve a table element by "([^\"]*)"$/ do |how|
184
- @element = @page.send "table_#{how}_element"
185
- end
186
-
187
- When /^I retrieve a table element by "([^"]*)" and "([^"]*)"$/ do |param1, param2|
188
- @element = @page.send "table_#{param1}_#{param2}_element"
189
- end
190
-
191
- When /^I get the image element$/ do
192
- @element = @page.image_id_image
193
- end
194
-
195
- Then /^the image should be "([^\"]*)" pixels wide$/ do |width|
196
- @element.width.should == width.to_i
197
- end
198
-
199
- Then /^the image should be "([^\"]*)" pixels tall$/ do |height|
200
- @element.height.should == height.to_i
201
- end
202
-
203
- When /^I get the image element by "([^\"]*)"$/ do |how|
204
- @element = @page.send "image_#{how}_element"
205
- end
206
-
207
- When /^I get the image element by "([^"]*)" and "([^"]*)"$/ do |param1, param2|
208
- @element = @page.send "image_#{param1}_#{param2}_element"
209
- end
210
-
211
- When /^I retrieve the hidden field element$/ do
212
- @element = @page.hidden_field_id_element
213
- end
214
-
215
- Then /^I should see the hidden field contains "([^\"]*)"$/ do |text|
216
- @page.hidden_field_id.should == text
217
- end
218
-
219
- When /^I search for the hidden field by "([^\"]*)"$/ do |how|
220
- @element = @page.send "hidden_field_#{how}_element"
221
- end
222
-
223
- Then /^hidden field element should contains "([^\"]*)"$/ do |text|
224
- @element.value.should == text
225
- end
226
-
227
- When /^I search for the hidden field by "([^"]*)" and "([^"]*)"$/ do |param1, param2|
228
- @element = @page.send "hidden_field_#{param1}_#{param2}_element"
229
- end
230
-
231
- Then /^I should be able to submit the form$/ do
232
- @element.submit
233
- end
234
-
235
- When /^I locate the form by "([^\"]*)"$/ do |how|
236
- @element = @page.send "form_#{how}_element"
237
- end
238
-
239
- When /^I locate the form using "([^"]*)" and "([^"]*)"$/ do |param1, param2|
240
- @element = @page.send "form_#{param1}_#{param2}_element"
241
- end
242
-
243
- When /^I get the text from the list item$/ do
244
- @text = @page.li_id
245
- end
246
-
247
- When /^I search for the list item by "([^\"]*)"$/ do |how|
248
- @text = @page.send "li_#{how}"
249
- end
250
-
251
- When /^I search for the list item by "([^"]*)" and "([^"]*)"$/ do |param1, param2|
252
- @text = @page.send "li_#{param1}_#{param2}"
253
- end
254
-
255
- When /^I get the first item from the unordered list$/ do
256
- @element = @page.ul_id_element[0]
257
- end
258
-
259
14
  Then /^the list items text should be "([^\"]*)"$/ do |expected_text|
260
15
  @element.text.should == expected_text
261
16
  end
262
17
 
263
- When /^I search for the unordered list by "([^\"]*)"$/ do |how|
264
- @list = @page.send "ul_#{how}_element"
265
- end
266
-
267
- When /^I search for the unordered list by "([^"]*)" and "([^"]*)"$/ do |param1, param2|
268
- @list = @page.send "ul_#{param1}_#{param2}_element"
269
- end
270
-
271
-
272
18
  When /^I get the first item from the list$/ do
273
19
  @element = @list[0]
274
20
  end
275
21
 
276
- When /^I get the first item from the ordered list$/ do
277
- @element = @page.ol_id_element[0]
278
- end
279
-
280
- When /^I search for the ordered list by "([^\"]*)"$/ do |how|
281
- @list = @page.send "ol_#{how}_element"
282
- end
283
-
284
- When /^I search for the ordered list by "([^"]*)" and "([^"]*)"$/ do |param1, param2|
285
- @list = @page.send "ol_#{param1}_#{param2}_element"
286
- end
287
-
288
22
  Then /^the table should have "([^\"]*)" rows$/ do |rows|
289
23
  @element.rows.should == rows.to_i
290
24
  end