page-object 0.2.4 → 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
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