page-object 0.6.3 → 0.6.4
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +15 -0
- data/features/button.feature +1 -0
- data/features/element.feature +60 -56
- data/features/frames.feature +1 -0
- data/features/generic_elements.feature +24 -0
- data/features/html/multi_elements.html +4 -0
- data/features/html/nested_elements.html +4 -1
- data/features/html/static_elements.html +15 -1
- data/features/label.feature +44 -0
- data/features/link.feature +1 -0
- data/features/sample-app/public/prototype.html +1 -0
- data/features/step_definitions/element_steps.rb +22 -6
- data/features/step_definitions/frames_steps.rb +4 -0
- data/features/step_definitions/generic_element_steps.rb +19 -0
- data/features/step_definitions/label_steps.rb +19 -0
- data/features/support/page.rb +17 -0
- data/lib/page-object.rb +7 -0
- data/lib/page-object/accessors.rb +73 -1
- data/lib/page-object/element_locators.rb +36 -0
- data/lib/page-object/elements.rb +2 -1
- data/lib/page-object/elements/button.rb +2 -2
- data/lib/page-object/elements/element.rb +6 -6
- data/lib/page-object/elements/label.rb +19 -0
- data/lib/page-object/elements/link.rb +2 -2
- data/lib/page-object/elements/text_field.rb +1 -1
- data/lib/page-object/nested_elements.rb +8 -0
- data/lib/page-object/page_factory.rb +6 -0
- data/lib/page-object/platforms/selenium_webdriver/element.rb +17 -17
- data/lib/page-object/platforms/selenium_webdriver/form.rb +2 -2
- data/lib/page-object/platforms/selenium_webdriver/image.rb +2 -2
- data/lib/page-object/platforms/selenium_webdriver/page_object.rb +54 -1
- data/lib/page-object/platforms/selenium_webdriver/select_list.rb +2 -2
- data/lib/page-object/platforms/selenium_webdriver/table.rb +2 -2
- data/lib/page-object/platforms/watir_webdriver/element.rb +14 -14
- data/lib/page-object/platforms/watir_webdriver/form.rb +2 -2
- data/lib/page-object/platforms/watir_webdriver/image.rb +2 -2
- data/lib/page-object/platforms/watir_webdriver/page_object.rb +72 -9
- data/lib/page-object/platforms/watir_webdriver/select_list.rb +5 -5
- data/lib/page-object/platforms/watir_webdriver/table.rb +2 -2
- data/lib/page-object/version.rb +1 -1
- data/page-object.gemspec +1 -1
- data/spec/page-object/accessors_spec.rb +15 -3
- data/spec/page-object/element_locators_spec.rb +24 -0
- data/spec/page-object/elements/button_spec.rb +2 -2
- data/spec/page-object/elements/label_spec.rb +29 -0
- data/spec/page-object/elements/link_spec.rb +2 -2
- data/spec/page-object/page-object_spec.rb +7 -1
- data/spec/page-object/page_factory_spec.rb +26 -0
- data/spec/page-object/platforms/watir_webdriver_spec.rb +1 -0
- metadata +26 -15
data/ChangeLog
CHANGED
@@ -1,3 +1,18 @@
|
|
1
|
+
=== Version 0.6.4 / 2012-3-27
|
2
|
+
* Enhancements
|
3
|
+
* Added support for finding the following elements by :css
|
4
|
+
Button
|
5
|
+
Link
|
6
|
+
* Added support for the label element (Thanks Paul Clewell)
|
7
|
+
* Added method to fetch generic element (Thanks Jim Holmes)
|
8
|
+
* Added direct_url alias for page_url
|
9
|
+
* Added visit alias for visit_page
|
10
|
+
* Added on alias for on_page
|
11
|
+
* Added element_with_focus method to return the element that has focus
|
12
|
+
* Changed Elements.element_class_for so parameters can be strings or symbols
|
13
|
+
* Changed page_url to accept a symbol that will cause it to call a corresponding method
|
14
|
+
* Updated to use watir-webdriver 0.5.4
|
15
|
+
|
1
16
|
=== Version 0.6.3 / 2012-3-1
|
2
17
|
* Enhancements
|
3
18
|
* Added #expected_title method to PageObject
|
data/features/button.feature
CHANGED
data/features/element.feature
CHANGED
@@ -16,46 +16,50 @@ Feature: Elements
|
|
16
16
|
When I check a disabled button
|
17
17
|
Then it should know it is not enabled
|
18
18
|
And it should know that it is disabled
|
19
|
+
|
20
|
+
Scenario: Setting focus and finding the element with focus
|
21
|
+
When I set the focus to the test text_field
|
22
|
+
Then I should know that the text_field has the focus
|
19
23
|
|
20
24
|
Scenario: Link element methods
|
21
25
|
When I retrieve a link element
|
22
26
|
Then I should know it exists
|
23
27
|
And I should know it is visible
|
24
|
-
And I should know
|
28
|
+
And I should know the text is "Google Search"
|
25
29
|
And I should know it is equal to itself
|
26
|
-
And I should know
|
30
|
+
And I should know the tag name is "a"
|
27
31
|
And I should know the attribute "readonly" is false
|
28
32
|
And I should be able to click it
|
29
33
|
|
30
34
|
@watir_only
|
31
35
|
Scenario: Link element methods for watir
|
32
36
|
When I retrieve a link element
|
33
|
-
Then I should know
|
37
|
+
Then I should know the value is ""
|
34
38
|
|
35
39
|
|
36
40
|
Scenario: Button element methods
|
37
41
|
When I retrieve a button element
|
38
42
|
Then I should know it exists
|
39
43
|
And I should know it is visible
|
40
|
-
And I should know
|
44
|
+
And I should know the value is "Click Me"
|
41
45
|
And I should know it is equal to itself
|
42
|
-
And I should know
|
46
|
+
And I should know the tag name is "input"
|
43
47
|
And I should know the attribute "readonly" is false
|
44
48
|
And I should be able to click it
|
45
49
|
|
46
50
|
@watir_only
|
47
51
|
Scenario: Button element methods for watir
|
48
52
|
When I retrieve a button element
|
49
|
-
Then I should know
|
53
|
+
Then I should know the text is "Click Me"
|
50
54
|
|
51
55
|
Scenario: Check Box element methods
|
52
56
|
When I retrieve a check box element
|
53
57
|
Then I should know it exists
|
54
58
|
And I should know it is visible
|
55
|
-
And I should know
|
56
|
-
And I should know
|
59
|
+
And I should know the text is ""
|
60
|
+
And I should know the value is "1"
|
57
61
|
And I should know it is equal to itself
|
58
|
-
And I should know
|
62
|
+
And I should know the tag name is "input"
|
59
63
|
And I should know the attribute "readonly" is false
|
60
64
|
And I should be able to click it
|
61
65
|
|
@@ -63,30 +67,30 @@ Feature: Elements
|
|
63
67
|
When I retrieve the div element
|
64
68
|
Then I should know it exists
|
65
69
|
And I should know it is visible
|
66
|
-
And I should know
|
70
|
+
And I should know the text is "page-object rocks!"
|
67
71
|
And I should know it is equal to itself
|
68
|
-
And I should know
|
72
|
+
And I should know the tag name is "div"
|
69
73
|
And I should know the attribute "readonly" is false
|
70
74
|
And I should be able to click it
|
71
75
|
|
72
76
|
@watir_only
|
73
77
|
Scenario: Div element methods for watir
|
74
78
|
When I retrieve the div element
|
75
|
-
Then I should know
|
79
|
+
Then I should know the value is ""
|
76
80
|
|
77
81
|
@selenium_only
|
78
82
|
Scenario: Div element methods for selenium
|
79
83
|
When I retrieve the div element
|
80
|
-
Then I should know
|
84
|
+
Then I should know the value is nil
|
81
85
|
|
82
86
|
Scenario: Radio Button element methods
|
83
87
|
When I retrieve a radio button
|
84
88
|
Then I should know it exists
|
85
89
|
And I should know it is visible
|
86
|
-
And I should know
|
87
|
-
And I should know
|
90
|
+
And I should know the text is ""
|
91
|
+
And I should know the value is "Milk"
|
88
92
|
And I should know it is equal to itself
|
89
|
-
And I should know
|
93
|
+
And I should know the tag name is "input"
|
90
94
|
And I should know the attribute "readonly" is false
|
91
95
|
And I should be able to click it
|
92
96
|
|
@@ -94,19 +98,19 @@ Feature: Elements
|
|
94
98
|
When I retrieve a select list
|
95
99
|
Then I should know it exists
|
96
100
|
And I should know it is visible
|
97
|
-
And I should know
|
98
|
-
And I should know
|
101
|
+
And I should know the text includes "Test 1"
|
102
|
+
And I should know the value is "option1"
|
99
103
|
And I should know it is equal to itself
|
100
|
-
And I should know
|
104
|
+
And I should know the tag name is "select"
|
101
105
|
And I should know the attribute "readonly" is false
|
102
106
|
And I should be able to click it
|
103
107
|
|
104
108
|
Scenario: Table element methods
|
105
109
|
When I retrieve a table element
|
106
110
|
Then I should know it is visible
|
107
|
-
And I should know
|
111
|
+
And I should know the text includes "Data1"
|
108
112
|
And I should know it is equal to itself
|
109
|
-
And I should know
|
113
|
+
And I should know the tag name is "table"
|
110
114
|
And I should know the attribute "readonly" is false
|
111
115
|
And I should be able to click it
|
112
116
|
|
@@ -114,41 +118,41 @@ Feature: Elements
|
|
114
118
|
Scenario: Table element methods in watir
|
115
119
|
When I retrieve a table element
|
116
120
|
Then I should know it exists
|
117
|
-
And I should know
|
121
|
+
And I should know the value is ""
|
118
122
|
|
119
123
|
@selenium_only
|
120
124
|
Scenario: Table element methods in selenium
|
121
125
|
When I retrieve a table element
|
122
|
-
Then I should know
|
126
|
+
Then I should know the value is nil
|
123
127
|
|
124
128
|
Scenario: Table Cell element methods
|
125
129
|
When I retrieve table cell
|
126
130
|
Then I should know it exists
|
127
131
|
And I should know it is visible
|
128
|
-
And I should know
|
132
|
+
And I should know the text includes "Data4"
|
129
133
|
And I should know it is equal to itself
|
130
|
-
And I should know
|
134
|
+
And I should know the tag name is "td"
|
131
135
|
And I should know the attribute "readonly" is false
|
132
136
|
And I should be able to click it
|
133
137
|
|
134
138
|
@watir_only
|
135
139
|
Scenario: Table Cell element methods in watir
|
136
140
|
When I retrieve table cell
|
137
|
-
Then I should know
|
141
|
+
Then I should know the value is ""
|
138
142
|
|
139
143
|
@selenium_only
|
140
144
|
Scenario: Table Cell element methods in selenium
|
141
145
|
When I retrieve table cell
|
142
|
-
Then I should know
|
146
|
+
Then I should know the value is nil
|
143
147
|
|
144
148
|
Scenario: Text Field element methods
|
145
149
|
When I retrieve a text field
|
146
150
|
Then I should know it exists
|
147
151
|
And I should know it is visible
|
148
|
-
And I should know
|
149
|
-
And I should know
|
152
|
+
And I should know the text includes ""
|
153
|
+
And I should know the value is ""
|
150
154
|
And I should know it is equal to itself
|
151
|
-
And I should know
|
155
|
+
And I should know the tag name is "input"
|
152
156
|
And I should know the attribute "readonly" is false
|
153
157
|
And I should be able to click it
|
154
158
|
|
@@ -156,10 +160,10 @@ Feature: Elements
|
|
156
160
|
When I retrieve the text area
|
157
161
|
Then I should know it exists
|
158
162
|
And I should know it is visible
|
159
|
-
And I should know
|
160
|
-
And I should know
|
163
|
+
And I should know the text includes ""
|
164
|
+
And I should know the value is ""
|
161
165
|
And I should know it is equal to itself
|
162
|
-
And I should know
|
166
|
+
And I should know the tag name is "textarea"
|
163
167
|
And I should know the attribute "readonly" is false
|
164
168
|
And I should be able to click it
|
165
169
|
|
@@ -167,58 +171,58 @@ Feature: Elements
|
|
167
171
|
When I get the image element
|
168
172
|
Then I should know it exists
|
169
173
|
And I should know it is visible
|
170
|
-
And I should know
|
174
|
+
And I should know the text includes ""
|
171
175
|
And I should know it is equal to itself
|
172
|
-
And I should know
|
176
|
+
And I should know the tag name is "img"
|
173
177
|
And I should know the attribute "readonly" is false
|
174
178
|
And I should be able to click it
|
175
179
|
|
176
180
|
@watir_only
|
177
181
|
Scenario: Image element methods in watir
|
178
182
|
When I get the image element
|
179
|
-
Then I should know
|
183
|
+
Then I should know the value is ""
|
180
184
|
|
181
185
|
@selenium_only
|
182
186
|
Scenario: Image element methods in selenium
|
183
187
|
When I get the image element
|
184
|
-
Then I should know
|
188
|
+
Then I should know the value is nil
|
185
189
|
|
186
190
|
Scenario: Hidden Field element methods
|
187
191
|
When I retrieve the hidden field element
|
188
192
|
Then I should know it exists
|
189
193
|
And I should know it is not visible
|
190
|
-
And I should know
|
191
|
-
And I should know
|
194
|
+
And I should know the text includes ""
|
195
|
+
And I should know the value is "12345"
|
192
196
|
And I should know it is equal to itself
|
193
|
-
And I should know
|
197
|
+
And I should know the tag name is "input"
|
194
198
|
And I should know the attribute "readonly" is false
|
195
199
|
|
196
200
|
Scenario: Form element methods
|
197
201
|
When I locate the form
|
198
202
|
Then I should know it exists
|
199
203
|
And I should know it is visible
|
200
|
-
And I should know
|
204
|
+
And I should know the text includes ""
|
201
205
|
And I should know it is equal to itself
|
202
|
-
And I should know
|
206
|
+
And I should know the tag name is "form"
|
203
207
|
And I should know the attribute "readonly" is false
|
204
208
|
|
205
209
|
@watir_only
|
206
210
|
Scenario: Form element methods in watir
|
207
211
|
When I locate the form
|
208
|
-
Then I should know
|
212
|
+
Then I should know the value is ""
|
209
213
|
|
210
214
|
@selenium_only
|
211
215
|
Scenario: Form element methods in selenium
|
212
216
|
When I locate the form
|
213
|
-
Then I should know
|
217
|
+
Then I should know the value is nil
|
214
218
|
|
215
219
|
Scenario: List item element methods
|
216
220
|
When I retrieve a list item element
|
217
221
|
Then I should know it exists
|
218
222
|
And I should know it is visible
|
219
|
-
And I should know
|
223
|
+
And I should know the text is "Item One"
|
220
224
|
And I should know it is equal to itself
|
221
|
-
And I should know
|
225
|
+
And I should know the tag name is "li"
|
222
226
|
And I should know the attribute "readonly" is false
|
223
227
|
And I should be able to click it
|
224
228
|
|
@@ -226,11 +230,11 @@ Feature: Elements
|
|
226
230
|
When I retrieve an unordered list element
|
227
231
|
Then I should know it exists
|
228
232
|
And I should know it is visible
|
229
|
-
And I should know
|
230
|
-
And I should know
|
231
|
-
And I should know
|
233
|
+
And I should know the text includes "Item One"
|
234
|
+
And I should know the text includes "Item Two"
|
235
|
+
And I should know the text includes "Item Three"
|
232
236
|
And I should know it is equal to itself
|
233
|
-
And I should know
|
237
|
+
And I should know the tag name is "ul"
|
234
238
|
And I should know the attribute "readonly" is false
|
235
239
|
And I should be able to click it
|
236
240
|
|
@@ -238,11 +242,11 @@ Feature: Elements
|
|
238
242
|
When I retrieve an ordered list element
|
239
243
|
Then I should know it exists
|
240
244
|
And I should know it is visible
|
241
|
-
And I should know
|
242
|
-
And I should know
|
243
|
-
And I should know
|
245
|
+
And I should know the text includes "Number One"
|
246
|
+
And I should know the text includes "Number Two"
|
247
|
+
And I should know the text includes "Number Three"
|
244
248
|
And I should know it is equal to itself
|
245
|
-
And I should know
|
249
|
+
And I should know the tag name is "ol"
|
246
250
|
And I should know the attribute "readonly" is false
|
247
251
|
And I should be able to click it
|
248
252
|
|
@@ -250,9 +254,9 @@ Feature: Elements
|
|
250
254
|
When I retrieve a heading element
|
251
255
|
Then I should know it exists
|
252
256
|
And I should know it is visible
|
253
|
-
And I should know
|
257
|
+
And I should know the text is "h1's are cool"
|
254
258
|
And I should know it is equal to itself
|
255
|
-
And I should know
|
259
|
+
And I should know the tag name is "h1"
|
256
260
|
And I should know the attribute "readonly" is false
|
257
261
|
And I should be able to click it
|
258
262
|
|
data/features/frames.feature
CHANGED
@@ -8,6 +8,7 @@ Feature: Handling frames
|
|
8
8
|
Then I should verify "page-object" is in the text field for frame 2 using "name"
|
9
9
|
When I type "page-object" into the text field for frame 2 using "index"
|
10
10
|
Then I should verify "page-object" is in the text field for frame 2 using "index"
|
11
|
+
#And I should be able to get the text fields text from frame 2 using "index"
|
11
12
|
|
12
13
|
Scenario: Switching between frames
|
13
14
|
Given I am on the frame elements page
|
@@ -0,0 +1,24 @@
|
|
1
|
+
Feature: Generic Elements
|
2
|
+
|
3
|
+
Background:
|
4
|
+
Given I am on the static elements page
|
5
|
+
|
6
|
+
Scenario: Getting the text from the article element
|
7
|
+
When I get the text from the article
|
8
|
+
Then the text should be "HTML 5 Article"
|
9
|
+
|
10
|
+
Scenario: Getting the text from the header element
|
11
|
+
When I get the text from the header
|
12
|
+
Then the text should be "HTML 5 Header"
|
13
|
+
|
14
|
+
Scenario: Getting the text from the footer element
|
15
|
+
When I get the text from the footer
|
16
|
+
Then the text should be "HTML 5 Footer"
|
17
|
+
|
18
|
+
Scenario: Getting the text from the summary element
|
19
|
+
When I get the text from the summary
|
20
|
+
Then the text should be "The summary"
|
21
|
+
|
22
|
+
Scenario: Getting the text from the details element
|
23
|
+
When I get the text from the details
|
24
|
+
Then the text should be "The summary The details"
|
@@ -50,6 +50,10 @@
|
|
50
50
|
<span class="span">Span 2</span>
|
51
51
|
<span class="span">Span 3</span>
|
52
52
|
|
53
|
+
<label class="label">Label 1</label>
|
54
|
+
<label class="label">Label 2</label>
|
55
|
+
<label class="label">Label 3</label>
|
56
|
+
|
53
57
|
<table class="table" border='1'>
|
54
58
|
<tr>
|
55
59
|
<td class="td">Data 1</td>
|
@@ -26,6 +26,9 @@
|
|
26
26
|
<span>
|
27
27
|
My alert
|
28
28
|
</span>
|
29
|
+
<label>
|
30
|
+
page-object is the best!
|
31
|
+
</label>
|
29
32
|
<table>
|
30
33
|
<tr><td>Data1</td><td>Data2</td></tr>
|
31
34
|
</table>
|
@@ -46,7 +49,7 @@
|
|
46
49
|
<ul>
|
47
50
|
<li>Item One</li>
|
48
51
|
<li>Item Two</li>
|
49
|
-
</ul
|
52
|
+
</ul>
|
50
53
|
|
51
54
|
</div>
|
52
55
|
|
@@ -13,7 +13,7 @@
|
|
13
13
|
|
14
14
|
<textarea rows="2" cols="20" id="text_area_id" class="text_area_class" name="text_area_name"></textarea>
|
15
15
|
|
16
|
-
<select name="sel_list_name" id="sel_list_id"
|
16
|
+
<select name="sel_list_name" id="sel_list_id" class="sel_list_class">
|
17
17
|
<option value="option1">Test 1</option>
|
18
18
|
<option value="option2">Test 2</option>
|
19
19
|
</select>
|
@@ -33,6 +33,10 @@
|
|
33
33
|
<span id="span_id" name="span_name" class="span_class">
|
34
34
|
My alert
|
35
35
|
</span>
|
36
|
+
|
37
|
+
<label id="label_id" name="label_name" class="label_class">
|
38
|
+
page-object is the best!
|
39
|
+
</label>
|
36
40
|
|
37
41
|
<table id='table_id' name='table_name' class='table_class' border='1'>
|
38
42
|
<tr>
|
@@ -94,6 +98,16 @@
|
|
94
98
|
<div id="parent_div">
|
95
99
|
<a href="success.html" id="child">Success</a>
|
96
100
|
</div>
|
101
|
+
|
102
|
+
<article id='article_id'>HTML 5 Article</article>
|
103
|
+
<header id='header_id'>HTML 5 Header</header>
|
104
|
+
<footer id='footer_id'>HTML 5 Footer</footer>
|
105
|
+
|
106
|
+
<details id='details_id'>
|
107
|
+
<summary id='summary_id'>The summary</summary>
|
108
|
+
The details
|
109
|
+
</details>
|
110
|
+
|
97
111
|
</body>
|
98
112
|
</html>
|
99
113
|
|
@@ -0,0 +1,44 @@
|
|
1
|
+
Feature: Handling labels with page object
|
2
|
+
|
3
|
+
In order to interact with labels,
|
4
|
+
Testers will need to access the element
|
5
|
+
and the ability to interrogate
|
6
|
+
|
7
|
+
Background:
|
8
|
+
Given I am on the static elements page
|
9
|
+
|
10
|
+
Scenario: Getting the text from a label
|
11
|
+
When I get the text from the label
|
12
|
+
Then the text should be "page-object is the best!"
|
13
|
+
|
14
|
+
Scenario: Getting the label element
|
15
|
+
When I retrieve the label element
|
16
|
+
Then I should know it exists
|
17
|
+
And I should know it is visible
|
18
|
+
|
19
|
+
Scenario Outline: Locating labels on the page
|
20
|
+
When I search for the label by "<search_by>"
|
21
|
+
Then the text should be "page-object is the best!"
|
22
|
+
|
23
|
+
Scenarios:
|
24
|
+
| search_by |
|
25
|
+
| id |
|
26
|
+
| class |
|
27
|
+
| xpath |
|
28
|
+
| index |
|
29
|
+
| name |
|
30
|
+
| text |
|
31
|
+
|
32
|
+
Scenario Outline: Locating labels using multiple parameters
|
33
|
+
When I search for the label by "<param1>" and "<param2>"
|
34
|
+
Then the text should be "page-object is the best!"
|
35
|
+
|
36
|
+
Scenarios:
|
37
|
+
| param1 | param2 |
|
38
|
+
| class | index |
|
39
|
+
| name | index |
|
40
|
+
|
41
|
+
Scenario: Finding a label dynamically
|
42
|
+
When I get the text from a label while the script is executing
|
43
|
+
Then I should see that the label exists
|
44
|
+
And the text should be "page-object is the best!"
|