druid-s 1.0.0
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.
- checksums.yaml +7 -0
- data/.gitignore +7 -0
- data/.rspec +1 -0
- data/.rvmrc +1 -0
- data/.travis.yml +27 -0
- data/ChangeLog +541 -0
- data/Gemfile +8 -0
- data/README.md +78 -0
- data/Rakefile +33 -0
- data/cucumber.yml +6 -0
- data/druid.gemspec +30 -0
- data/features/area.feature +33 -0
- data/features/async.feature +16 -0
- data/features/audio.feature +61 -0
- data/features/bold.feature +20 -0
- data/features/button.feature +81 -0
- data/features/canvas.feature +34 -0
- data/features/checkbox.feature +48 -0
- data/features/div.feature +45 -0
- data/features/element.feature +281 -0
- data/features/file_field.feature +38 -0
- data/features/form.feature +37 -0
- data/features/frames.feature +76 -0
- data/features/generic_elements.feature +29 -0
- data/features/heading.feature +160 -0
- data/features/hidden_field.feature +39 -0
- data/features/html/async.html +31 -0
- data/features/html/frame_1.html +18 -0
- data/features/html/frame_2.html +16 -0
- data/features/html/frame_3.html +14 -0
- data/features/html/frames.html +12 -0
- data/features/html/hover.html +11 -0
- data/features/html/iframes.html +12 -0
- data/features/html/images/circle.png +0 -0
- data/features/html/images/img_pulpit.jpg +0 -0
- data/features/html/modal.html +17 -0
- data/features/html/modal_1.html +38 -0
- data/features/html/modal_2.html +27 -0
- data/features/html/multi_elements.html +145 -0
- data/features/html/nested_elements.html +75 -0
- data/features/html/nested_frame_1.html +1 -0
- data/features/html/nested_frame_2.html +11 -0
- data/features/html/nested_frame_3.html +14 -0
- data/features/html/nested_frames.html +10 -0
- data/features/html/planets.gif +0 -0
- data/features/html/static_elements.html +203 -0
- data/features/html/success.html +8 -0
- data/features/html/sun.gif +0 -0
- data/features/html/sun.html +7 -0
- data/features/image.feature +47 -0
- data/features/italic.feature +20 -0
- data/features/javascript.feature +28 -0
- data/features/label.feature +43 -0
- data/features/link.feature +56 -0
- data/features/list_item.feature +37 -0
- data/features/modal_dialog.feature +9 -0
- data/features/multi_elements.feature +498 -0
- data/features/nested_elements.feature +121 -0
- data/features/ordered_list.feature +46 -0
- data/features/page_level_actions.feature +116 -0
- data/features/paragraph.feature +33 -0
- data/features/populate_page_with.feature +25 -0
- data/features/radio_button.feature +51 -0
- data/features/radio_button_group.feature +28 -0
- data/features/sample-app/public/04-Death_Becomes_Fur.mp4 +0 -0
- data/features/sample-app/public/04-Death_Becomes_Fur.oga +0 -0
- data/features/sample-app/public/audio_video.html +19 -0
- data/features/sample-app/public/jquery-1.3.2.js +4376 -0
- data/features/sample-app/public/jquery.html +28 -0
- data/features/sample-app/public/movie.mp4 +0 -0
- data/features/sample-app/public/movie.ogg +0 -0
- data/features/sample-app/public/prototype-1.6.0.3.js +4320 -0
- data/features/sample-app/public/prototype.html +32 -0
- data/features/sample-app/sample_app.rb +35 -0
- data/features/section.feature +132 -0
- data/features/select_list.feature +84 -0
- data/features/span.feature +43 -0
- data/features/step_definations/area_steps.rb +23 -0
- data/features/step_definations/async_steps.rb +80 -0
- data/features/step_definations/audio_steps.rb +47 -0
- data/features/step_definations/bold_steps.rb +11 -0
- data/features/step_definations/button_steps.rb +52 -0
- data/features/step_definations/canvas_steps.rb +19 -0
- data/features/step_definations/checkbox_steps.rb +39 -0
- data/features/step_definations/div_steps.rb +28 -0
- data/features/step_definations/element_steps.rb +217 -0
- data/features/step_definations/file_field_steps.rb +31 -0
- data/features/step_definations/form_steps.rb +23 -0
- data/features/step_definations/frame_steps.rb +189 -0
- data/features/step_definations/generic_element_steps.rb +31 -0
- data/features/step_definations/heading_steps.rb +39 -0
- data/features/step_definations/hidden_field_steps.rb +27 -0
- data/features/step_definations/image_steps.rb +35 -0
- data/features/step_definations/italic_steps.rb +11 -0
- data/features/step_definations/javasript_steps.rb +52 -0
- data/features/step_definations/label_steps.rb +19 -0
- data/features/step_definations/link_steps.rb +42 -0
- data/features/step_definations/list_item_steps.rb +24 -0
- data/features/step_definations/modal_dialog_steps.rb +38 -0
- data/features/step_definations/multi_elements_steps.rb +557 -0
- data/features/step_definations/nested_elements_steps.rb +219 -0
- data/features/step_definations/ordered_list_steps.rb +49 -0
- data/features/step_definations/page_level_actions_steps.rb +172 -0
- data/features/step_definations/page_traversal_steps.rb +4 -0
- data/features/step_definations/paragraph_steps.rb +19 -0
- data/features/step_definations/populate_page_with_steps.rb +3 -0
- data/features/step_definations/radio_button_group_steps.rb +32 -0
- data/features/step_definations/radio_button_steps.rb +31 -0
- data/features/step_definations/section_steps.rb +271 -0
- data/features/step_definations/select_list_steps.rb +91 -0
- data/features/step_definations/span_steps.rb +23 -0
- data/features/step_definations/table_cell_steps.rb +27 -0
- data/features/step_definations/table_row_steps.rb +23 -0
- data/features/step_definations/table_steps.rb +109 -0
- data/features/step_definations/text_area_steps.rb +39 -0
- data/features/step_definations/text_field_steps.rb +39 -0
- data/features/step_definations/unordered_list_steps.rb +27 -0
- data/features/step_definations/video_steps.rb +27 -0
- data/features/support/ajax_test_environment.rb +26 -0
- data/features/support/audio_video_page.rb +23 -0
- data/features/support/env.rb +5 -0
- data/features/support/hooks.rb +3 -0
- data/features/support/page.rb +372 -0
- data/features/support/persistent_browser.rb +58 -0
- data/features/support/targets/firefox14_osx.rb +5 -0
- data/features/support/targets/firefox14_windows7.rb +5 -0
- data/features/support/url_helper.rb +50 -0
- data/features/table.feature +127 -0
- data/features/table_cell.feature +42 -0
- data/features/table_row.feature +30 -0
- data/features/text_area.feature +44 -0
- data/features/text_field.feature +53 -0
- data/features/unordered_list.feature +46 -0
- data/features/video.feature +66 -0
- data/lib/druid/accessors.rb +1082 -0
- data/lib/druid/assist.rb +653 -0
- data/lib/druid/element_locators.rb +21 -0
- data/lib/druid/elements/area.rb +9 -0
- data/lib/druid/elements/audio.rb +9 -0
- data/lib/druid/elements/bold.rb +8 -0
- data/lib/druid/elements/button.rb +12 -0
- data/lib/druid/elements/canvas.rb +9 -0
- data/lib/druid/elements/check_box.rb +9 -0
- data/lib/druid/elements/div.rb +9 -0
- data/lib/druid/elements/element.rb +187 -0
- data/lib/druid/elements/file_field.rb +9 -0
- data/lib/druid/elements/form.rb +9 -0
- data/lib/druid/elements/heading.rb +14 -0
- data/lib/druid/elements/hidden_field.rb +9 -0
- data/lib/druid/elements/image.rb +9 -0
- data/lib/druid/elements/italic.rb +9 -0
- data/lib/druid/elements/label.rb +8 -0
- data/lib/druid/elements/link.rb +9 -0
- data/lib/druid/elements/list_item.rb +9 -0
- data/lib/druid/elements/media.rb +11 -0
- data/lib/druid/elements/option.rb +9 -0
- data/lib/druid/elements/ordered_list.rb +29 -0
- data/lib/druid/elements/paragraph.rb +9 -0
- data/lib/druid/elements/radio_button.rb +9 -0
- data/lib/druid/elements/select_list.rb +30 -0
- data/lib/druid/elements/span.rb +9 -0
- data/lib/druid/elements/table.rb +92 -0
- data/lib/druid/elements/table_cell.rb +11 -0
- data/lib/druid/elements/table_row.rb +50 -0
- data/lib/druid/elements/text_area.rb +10 -0
- data/lib/druid/elements/text_field.rb +11 -0
- data/lib/druid/elements/unordered_list.rb +32 -0
- data/lib/druid/elements/video.rb +8 -0
- data/lib/druid/elements.rb +55 -0
- data/lib/druid/javascript/angularjs.rb +12 -0
- data/lib/druid/javascript/jquery.rb +12 -0
- data/lib/druid/javascript/prototype.rb +12 -0
- data/lib/druid/javascript/yui.rb +19 -0
- data/lib/druid/javascript_framework_facade.rb +76 -0
- data/lib/druid/locator_generator.rb +181 -0
- data/lib/druid/nested_elements.rb +56 -0
- data/lib/druid/page_factory.rb +115 -0
- data/lib/druid/page_populator.rb +104 -0
- data/lib/druid/section_collection.rb +17 -0
- data/lib/druid/version.rb +3 -0
- data/lib/druid.rb +452 -0
- data/spec/druid/accessors_spec.rb +1209 -0
- data/spec/druid/druid_spec.rb +295 -0
- data/spec/druid/element_locators_spec.rb +750 -0
- data/spec/druid/elements/bold_spec.rb +12 -0
- data/spec/druid/elements/button_spec.rb +23 -0
- data/spec/druid/elements/check_box_spec.rb +14 -0
- data/spec/druid/elements/div_spec.rb +10 -0
- data/spec/druid/elements/element_spec.rb +250 -0
- data/spec/druid/elements/file_field_spec.rb +13 -0
- data/spec/druid/elements/form_spec.rb +18 -0
- data/spec/druid/elements/heading_spec.rb +30 -0
- data/spec/druid/elements/hidden_field_spec.rb +10 -0
- data/spec/druid/elements/image_spec.rb +23 -0
- data/spec/druid/elements/itatic_spec.rb +11 -0
- data/spec/druid/elements/label_spec.rb +10 -0
- data/spec/druid/elements/link_spec.rb +10 -0
- data/spec/druid/elements/list_item_spec.rb +10 -0
- data/spec/druid/elements/media_spec.rb +12 -0
- data/spec/druid/elements/option_spec.rb +21 -0
- data/spec/druid/elements/ordered_list_spec.rb +38 -0
- data/spec/druid/elements/page_factory_spec.rb +40 -0
- data/spec/druid/elements/paragraph_spec.rb +12 -0
- data/spec/druid/elements/radio_button_spec.rb +14 -0
- data/spec/druid/elements/select_list_spec.rb +51 -0
- data/spec/druid/elements/span_spec.rb +10 -0
- data/spec/druid/elements/table_cell_spec.rb +14 -0
- data/spec/druid/elements/table_row_spec.rb +34 -0
- data/spec/druid/elements/table_spec.rb +47 -0
- data/spec/druid/elements/text_area_spec.rb +13 -0
- data/spec/druid/elements/text_field_spec.rb +22 -0
- data/spec/druid/elements/unordered_list_spec.rb +39 -0
- data/spec/druid/javascript_framework_facade_spec.rb +59 -0
- data/spec/druid/nested_element_spec.rb +128 -0
- data/spec/druid/page_factory_spec.rb +235 -0
- data/spec/druid/page_populator_spec.rb +173 -0
- data/spec/druid/page_section_spec.rb +70 -0
- data/spec/spec_helper.rb +9 -0
- metadata +517 -0
|
@@ -0,0 +1,498 @@
|
|
|
1
|
+
Feature: Multi Elements
|
|
2
|
+
|
|
3
|
+
Background:
|
|
4
|
+
Given I am on the multi elements page
|
|
5
|
+
|
|
6
|
+
Scenario: Selecting buttons using an identifier
|
|
7
|
+
When I select the buttons with class "button"
|
|
8
|
+
Then I should have 3 buttons
|
|
9
|
+
And the value of button 1 should be "Button 1"
|
|
10
|
+
And the value of button 2 should be "Button 2"
|
|
11
|
+
And the value of button 3 should be "Button 3"
|
|
12
|
+
|
|
13
|
+
Scenario: Selecting buttons using no identifier
|
|
14
|
+
When I select all buttons using no identifier
|
|
15
|
+
Then I should have 3 buttons
|
|
16
|
+
|
|
17
|
+
Scenario: Selecting text fields using an identifier
|
|
18
|
+
When I select the text fields with class "textfield"
|
|
19
|
+
Then I should have 3 text fields
|
|
20
|
+
And the value of text field 1 should be "text 1"
|
|
21
|
+
And the value of text field 2 should be "text 2"
|
|
22
|
+
And the value of text field 3 should be "text 3"
|
|
23
|
+
|
|
24
|
+
Scenario: Selecting text field using no identifier
|
|
25
|
+
When I select all text fields using no identifier
|
|
26
|
+
Then I should have 3 text fields
|
|
27
|
+
|
|
28
|
+
Scenario: Selecting hidden fields using an identifier
|
|
29
|
+
When I select the hidden fields with class "hiddenfield"
|
|
30
|
+
Then I should have 3 hidden fields
|
|
31
|
+
And the value of hidden field 1 should be "hidden 1"
|
|
32
|
+
And the value of hidden field 2 should be "hidden 2"
|
|
33
|
+
And the value of hidden field 3 should be "hidden 3"
|
|
34
|
+
|
|
35
|
+
Scenario: Selecting hidden fields using no identifier
|
|
36
|
+
When I select all hidden fields using no identifier
|
|
37
|
+
Then I should have 3 hidden fields
|
|
38
|
+
|
|
39
|
+
Scenario: Selecting text areas using an identifier
|
|
40
|
+
When I select the text areas with class "textarea"
|
|
41
|
+
Then I should have 3 text areas
|
|
42
|
+
And the value of text area 1 should be "textarea 1"
|
|
43
|
+
And the value of text area 2 should be "textarea 2"
|
|
44
|
+
And the value of text area 3 should be "textarea 3"
|
|
45
|
+
|
|
46
|
+
Scenario: Selecting text areas using no identifier
|
|
47
|
+
When I select all text areas using no identifier
|
|
48
|
+
Then I should have 3 text areas
|
|
49
|
+
|
|
50
|
+
Scenario: Selecting select lists using an identifier
|
|
51
|
+
When I select the select lists with class "selectlist"
|
|
52
|
+
Then I should have 3 select lists
|
|
53
|
+
And the value of select list 1 should be "selectlist 1"
|
|
54
|
+
And the value of select list 2 should be "selectlist 2"
|
|
55
|
+
And the value of select list 3 should be "selectlist 3"
|
|
56
|
+
|
|
57
|
+
Scenario: Selecting select lists using no identifier
|
|
58
|
+
When I select all select lists using no identifier
|
|
59
|
+
Then I should have 3 select lists
|
|
60
|
+
|
|
61
|
+
Scenario: Selecting links using an identifier
|
|
62
|
+
When I select the link with class "link"
|
|
63
|
+
Then I should have 3 links
|
|
64
|
+
And the text of link 1 should be "link 1"
|
|
65
|
+
And the text of link 2 should be "link 2"
|
|
66
|
+
And the text of link 3 should be "link 3"
|
|
67
|
+
|
|
68
|
+
Scenario: Selecting links using no identifier
|
|
69
|
+
When I select all links using no identifier
|
|
70
|
+
Then I should have 3 links
|
|
71
|
+
|
|
72
|
+
Scenario: Selecting checkboxes using an identifier
|
|
73
|
+
When I select the check boxes with class "checkbox"
|
|
74
|
+
Then I should have 3 checkboxes
|
|
75
|
+
And the value of checkbox 1 should be "checkbox 1"
|
|
76
|
+
And the value of checkbox 2 should be "checkbox 2"
|
|
77
|
+
And the value of checkbox 3 should be "checkbox 3"
|
|
78
|
+
|
|
79
|
+
Scenario: Selecting checkboxes using no identifier
|
|
80
|
+
When I select all check boxes using no identifier
|
|
81
|
+
Then I should have 3 checkboxes
|
|
82
|
+
|
|
83
|
+
Scenario: Selecting radio buttons uisng an identifier
|
|
84
|
+
When I select the radio buttons with class "radio"
|
|
85
|
+
Then I should have 3 radio buttons
|
|
86
|
+
And the value of radio button 1 should be "radio 1"
|
|
87
|
+
And the value of radio button 2 should be "radio 2"
|
|
88
|
+
And the value of radio button 3 should be "radio 3"
|
|
89
|
+
|
|
90
|
+
Scenario: Selecting radio buttons using no identifier
|
|
91
|
+
When I select all radio buttons using no identifier
|
|
92
|
+
Then I should have 3 radio buttons
|
|
93
|
+
|
|
94
|
+
Scenario: Selecting divs using an identifier
|
|
95
|
+
When I select the divs with class "div"
|
|
96
|
+
Then I should have 3 divs
|
|
97
|
+
And the text of div 1 should be "Div 1"
|
|
98
|
+
And the text of div 2 should be "Div 2"
|
|
99
|
+
And the text of div 3 should be "Div 3"
|
|
100
|
+
|
|
101
|
+
Scenario: Selecting divs using no identifier
|
|
102
|
+
When I select all divs using no identifier
|
|
103
|
+
Then I should have 3 divs
|
|
104
|
+
|
|
105
|
+
Scenario: Selecting spans using an identifier
|
|
106
|
+
When I select the spans with class "span"
|
|
107
|
+
Then I should have 3 spans
|
|
108
|
+
And the text of span 1 should be "Span 1"
|
|
109
|
+
And the text of span 2 should be "Span 2"
|
|
110
|
+
And the text of span 3 should be "Span 3"
|
|
111
|
+
|
|
112
|
+
Scenario: Selecting spans using no identifier
|
|
113
|
+
When I select all spans using no identifier
|
|
114
|
+
Then I should have 3 spans
|
|
115
|
+
|
|
116
|
+
Scenario: Selecting tables using an identifier
|
|
117
|
+
When I select the tables with class "table"
|
|
118
|
+
Then I should have 3 tables
|
|
119
|
+
And the first row first column for table 1 should have "Data 1"
|
|
120
|
+
And the first row first column for table 2 should have "Data 4"
|
|
121
|
+
And the first row first column for table 3 should have "Data 7"
|
|
122
|
+
|
|
123
|
+
Scenario: Selecting tables using no identifier
|
|
124
|
+
When I select all tables using no identifier
|
|
125
|
+
Then I should have 3 tables
|
|
126
|
+
|
|
127
|
+
Scenario: Selecting cells using an identifier
|
|
128
|
+
When I select the cells with class "td"
|
|
129
|
+
Then I should have 3 cells
|
|
130
|
+
And the text for cell 1 should be "Data 1"
|
|
131
|
+
And the text for cell 2 should be "Data 2"
|
|
132
|
+
And the text for cell 3 should be "Data 3"
|
|
133
|
+
|
|
134
|
+
Scenario: Selecting cells using no identifier
|
|
135
|
+
When I select all cells using no identifier
|
|
136
|
+
Then I should have 9 cells
|
|
137
|
+
|
|
138
|
+
Scenario: Selecting images using an identifier
|
|
139
|
+
When I select the images with class "image"
|
|
140
|
+
Then I should have 3 images
|
|
141
|
+
And the alt for image 1 should be "image 1"
|
|
142
|
+
And the alt for image 2 should be "image 2"
|
|
143
|
+
And the alt for image 3 should be "image 3"
|
|
144
|
+
|
|
145
|
+
Scenario: Selecting images using no identifier
|
|
146
|
+
When I select the images using no identifier
|
|
147
|
+
Then I should have 3 images
|
|
148
|
+
|
|
149
|
+
Scenario: Selecting forms using an identifier
|
|
150
|
+
When I select the forms with class "form"
|
|
151
|
+
Then I should have 3 forms
|
|
152
|
+
And the action for form 1 should be "form1"
|
|
153
|
+
And the action for form 2 should be "form2"
|
|
154
|
+
And the action for form 3 should be "form3"
|
|
155
|
+
|
|
156
|
+
Scenario: Selecting forms using no identifier
|
|
157
|
+
When I select the forms using no identifier
|
|
158
|
+
Then I should have 3 forms
|
|
159
|
+
|
|
160
|
+
Scenario: Selecting list items using an identifier
|
|
161
|
+
When I select the list items with class "li"
|
|
162
|
+
Then I should have 3 list items
|
|
163
|
+
And the text for list item 1 should be "Item One"
|
|
164
|
+
And the text for list item 2 should be "Item Two"
|
|
165
|
+
And the text for list item 3 should be "Item Three"
|
|
166
|
+
|
|
167
|
+
Scenario: Selecting list items using no identifier
|
|
168
|
+
When I select all list items using no identifier
|
|
169
|
+
Then I should have 8 list items
|
|
170
|
+
|
|
171
|
+
Scenario: Selecting unordered lists using an identifier
|
|
172
|
+
When I select the unordered lists with class "ul"
|
|
173
|
+
Then I should have 3 unordered lists
|
|
174
|
+
And the text for the first item in unordered list 1 should be "Item One"
|
|
175
|
+
And the text for the first item in unordered list 2 should be "Item Four"
|
|
176
|
+
And the text for the first item in unordered list 3 should be "Item Five"
|
|
177
|
+
|
|
178
|
+
Scenario: Selecting unordered lists using no identifier
|
|
179
|
+
When I select all unordered lists using no identifier
|
|
180
|
+
Then I should have 3 unordered lists
|
|
181
|
+
|
|
182
|
+
Scenario: Selecting ordered lists using an identifier
|
|
183
|
+
When I select the ordered lists with class "ol"
|
|
184
|
+
Then I should have 3 ordered lists
|
|
185
|
+
And the text for the first item in ordered list 1 should be "Number One"
|
|
186
|
+
And the text for the first item in ordered list 2 should be "Number Two"
|
|
187
|
+
And the text for the first item in ordered list 3 should be "Number Three"
|
|
188
|
+
|
|
189
|
+
Scenario: Selecting ordered lists using no identifier
|
|
190
|
+
When I select all ordered lists using no identifier
|
|
191
|
+
Then I should have 3 ordered lists
|
|
192
|
+
|
|
193
|
+
Scenario: Selecting h1s using an identifier
|
|
194
|
+
When I select the h1s with class "h1"
|
|
195
|
+
Then I should have 3 h1s
|
|
196
|
+
And the text for h1 1 should be "H1 One"
|
|
197
|
+
And the text for h1 2 should be "H1 Two"
|
|
198
|
+
And the text for h1 3 should be "H1 Three"
|
|
199
|
+
|
|
200
|
+
Scenario: Selecting h1s using no identifier
|
|
201
|
+
When I select all h1s using no identifier
|
|
202
|
+
Then I should have 3 h1s
|
|
203
|
+
|
|
204
|
+
Scenario: Selecting h2s using an identifier
|
|
205
|
+
When I select the h2s with class "h2"
|
|
206
|
+
Then I should have 3 h2s
|
|
207
|
+
And the text for h2 1 should be "H2 One"
|
|
208
|
+
And the text for h2 2 should be "H2 Two"
|
|
209
|
+
And the text for h2 3 should be "H2 Three"
|
|
210
|
+
|
|
211
|
+
Scenario: Selecting h2s using no identifier
|
|
212
|
+
When I select all h2s using no identifier
|
|
213
|
+
Then I should have 3 h2s
|
|
214
|
+
|
|
215
|
+
Scenario: Selecting h3s using an identifier
|
|
216
|
+
When I select the h3s with class "h3"
|
|
217
|
+
Then I should have 3 h3s
|
|
218
|
+
And the text for h3 1 should be "H3 One"
|
|
219
|
+
And the text for h3 2 should be "H3 Two"
|
|
220
|
+
And the text for h3 3 should be "H3 Three"
|
|
221
|
+
|
|
222
|
+
Scenario: Selecting h3s using no identifier
|
|
223
|
+
When I select all h3s using no identifier
|
|
224
|
+
Then I should have 3 h3s
|
|
225
|
+
|
|
226
|
+
Scenario: Selecting h4s using an identifier
|
|
227
|
+
When I select the h4s with class "h4"
|
|
228
|
+
Then I should have 3 h4s
|
|
229
|
+
And the text for h4 1 should be "H4 One"
|
|
230
|
+
And the text for h4 2 should be "H4 Two"
|
|
231
|
+
And the text for h4 3 should be "H4 Three"
|
|
232
|
+
|
|
233
|
+
Scenario: Selecting h4s using no identifier
|
|
234
|
+
When I select all h4s using no identifier
|
|
235
|
+
Then I should have 3 h4s
|
|
236
|
+
|
|
237
|
+
Scenario: Selecting h5s using an identifier
|
|
238
|
+
When I select the h5s with class "h5"
|
|
239
|
+
Then I should have 3 h5s
|
|
240
|
+
And the text for h5 1 should be "H5 One"
|
|
241
|
+
And the text for h5 2 should be "H5 Two"
|
|
242
|
+
And the text for h5 3 should be "H5 Three"
|
|
243
|
+
|
|
244
|
+
Scenario: Selecting h5s using no identifier
|
|
245
|
+
When I select all h5s using no identifier
|
|
246
|
+
Then I should have 3 h5s
|
|
247
|
+
|
|
248
|
+
Scenario: Selecting h6s using an identifier
|
|
249
|
+
When I select the h6s with class "h6"
|
|
250
|
+
Then I should have 3 h6s
|
|
251
|
+
And the text for h6 1 should be "H6 One"
|
|
252
|
+
And the text for h6 2 should be "H6 Two"
|
|
253
|
+
And the text for h6 3 should be "H6 Three"
|
|
254
|
+
|
|
255
|
+
Scenario: Selecting h6s using no identifier
|
|
256
|
+
When I select all h6s using no identifier
|
|
257
|
+
Then I should have 3 h6s
|
|
258
|
+
|
|
259
|
+
Scenario: Selecting paragraphs using an identifier
|
|
260
|
+
When I select the paragraphs with class "p"
|
|
261
|
+
Then I should have 3 paragraphs
|
|
262
|
+
And the text for paragraph 1 should be "Paragraph One"
|
|
263
|
+
And the text for paragraph 2 should be "Paragraph Two"
|
|
264
|
+
And the text for paragraph 3 should be "Paragraph Three"
|
|
265
|
+
|
|
266
|
+
Scenario: Selcting paragraphs using no identifier
|
|
267
|
+
When I select all paragraphs using no identifier
|
|
268
|
+
Then I should have 3 paragraphs
|
|
269
|
+
|
|
270
|
+
Scenario: Selecting labels using an identifier
|
|
271
|
+
When I select the labels with class "label"
|
|
272
|
+
Then I should have 3 labels
|
|
273
|
+
And the text for label 1 should be "Label 1"
|
|
274
|
+
And the text for label 2 should be "Label 2"
|
|
275
|
+
And the text for label 3 should be "Label 3"
|
|
276
|
+
|
|
277
|
+
Scenario: Selecting lables using no identifier
|
|
278
|
+
When I select all labels using no identifier
|
|
279
|
+
Then I should have 3 labels
|
|
280
|
+
|
|
281
|
+
Scenario: Selecting file fields using an identifier
|
|
282
|
+
When I select the file fields with class "file_field_class"
|
|
283
|
+
Then I should have 3 file fields
|
|
284
|
+
And the title for file field 1 should be "File Field 1"
|
|
285
|
+
And the title for file field 2 should be "File Field 2"
|
|
286
|
+
And the title for file field 3 should be "File Field 3"
|
|
287
|
+
|
|
288
|
+
Scenario: Selecting file fields using no identifier
|
|
289
|
+
When I select all file fields using no identifier
|
|
290
|
+
Then I should have 3 file fields
|
|
291
|
+
|
|
292
|
+
Scenario: Selecting all divs based on a class declaration
|
|
293
|
+
When I select the divs using the generated method
|
|
294
|
+
Then I should have 3 divs
|
|
295
|
+
And the text of div 1 should be "Div 1"
|
|
296
|
+
And the text of div 2 should be "Div 2"
|
|
297
|
+
And the text of div 3 should be "Div 3"
|
|
298
|
+
|
|
299
|
+
Scenario: Selecting buttons based on a class declaration
|
|
300
|
+
When I select the buttons using the generated method
|
|
301
|
+
Then I should have 3 buttons
|
|
302
|
+
And the value of button 1 should be "Button 1"
|
|
303
|
+
And the value of button 2 should be "Button 2"
|
|
304
|
+
And the value of button 3 should be "Button 3"
|
|
305
|
+
|
|
306
|
+
Scenario: Selecting text fields based on a class declaration
|
|
307
|
+
When I select the text field using the generated method
|
|
308
|
+
Then I should have 3 text fields
|
|
309
|
+
And the value of text field 1 should be "text 1"
|
|
310
|
+
And the value of text field 2 should be "text 2"
|
|
311
|
+
And the value of text field 3 should be "text 3"
|
|
312
|
+
|
|
313
|
+
Scenario: Selecting hidden fields based on a class declaration
|
|
314
|
+
When I select the hidden fields using the generated method
|
|
315
|
+
Then I should have 3 hidden fields
|
|
316
|
+
And the value of hidden field 1 should be "hidden 1"
|
|
317
|
+
And the value of hidden field 2 should be "hidden 2"
|
|
318
|
+
And the value of hidden field 3 should be "hidden 3"
|
|
319
|
+
|
|
320
|
+
Scenario: Selecting text areas based on a class declaration
|
|
321
|
+
When I select the text areas using the generated method
|
|
322
|
+
Then I should have 3 text areas
|
|
323
|
+
And the value of text area 1 should be "textarea 1"
|
|
324
|
+
And the value of text area 2 should be "textarea 2"
|
|
325
|
+
And the value of text area 3 should be "textarea 3"
|
|
326
|
+
|
|
327
|
+
Scenario: Selecting select lists based on a class declaration
|
|
328
|
+
When I select the select lists using the generated method
|
|
329
|
+
Then I should have 3 select lists
|
|
330
|
+
And the value of select list 1 should be "selectlist 1"
|
|
331
|
+
And the value of select list 2 should be "selectlist 2"
|
|
332
|
+
And the value of select list 3 should be "selectlist 3"
|
|
333
|
+
|
|
334
|
+
Scenario: Selecting links based on a class declaration
|
|
335
|
+
When I select the links using the generated method
|
|
336
|
+
Then I should have 3 links
|
|
337
|
+
And the text of link 1 should be "link 1"
|
|
338
|
+
And the text of link 2 should be "link 2"
|
|
339
|
+
And the text of link 3 should be "link 3"
|
|
340
|
+
|
|
341
|
+
Scenario: Selecting checkboxes based on a class declaration
|
|
342
|
+
When I select the check boxes using the generated method
|
|
343
|
+
Then I should have 3 checkboxes
|
|
344
|
+
And the value of checkbox 1 should be "checkbox 1"
|
|
345
|
+
And the value of checkbox 2 should be "checkbox 2"
|
|
346
|
+
And the value of checkbox 3 should be "checkbox 3"
|
|
347
|
+
|
|
348
|
+
Scenario: Selecting radio buttons based on a class declaration
|
|
349
|
+
When I select the radio buttons using the generated method
|
|
350
|
+
Then I should have 3 radio buttons
|
|
351
|
+
And the value of radio button 1 should be "radio 1"
|
|
352
|
+
And the value of radio button 2 should be "radio 2"
|
|
353
|
+
And the value of radio button 3 should be "radio 3"
|
|
354
|
+
|
|
355
|
+
Scenario: Selecting spans based on a class declaration
|
|
356
|
+
When I select the spans using the generated method
|
|
357
|
+
Then I should have 3 spans
|
|
358
|
+
And the text of span 1 should be "Span 1"
|
|
359
|
+
And the text of span 2 should be "Span 2"
|
|
360
|
+
And the text of span 3 should be "Span 3"
|
|
361
|
+
|
|
362
|
+
Scenario: Selecting tables based on a class declaration
|
|
363
|
+
When I select the tables using the generated method
|
|
364
|
+
Then I should have 3 tables
|
|
365
|
+
And the first row first column for table 1 should have "Data 1"
|
|
366
|
+
And the first row first column for table 2 should have "Data 4"
|
|
367
|
+
And the first row first column for table 3 should have "Data 7"
|
|
368
|
+
|
|
369
|
+
Scenario: Selecting cells based on a class declaration
|
|
370
|
+
When I select the cells using the generated method
|
|
371
|
+
Then I should have 3 cells
|
|
372
|
+
And the text for cell 1 should be "Data 1"
|
|
373
|
+
And the text for cell 2 should be "Data 2"
|
|
374
|
+
And the text for cell 3 should be "Data 3"
|
|
375
|
+
|
|
376
|
+
Scenario: Selecting images based on a class declaration
|
|
377
|
+
When I select the images using the generated method
|
|
378
|
+
Then I should have 3 images
|
|
379
|
+
And the alt for image 1 should be "image 1"
|
|
380
|
+
And the alt for image 2 should be "image 2"
|
|
381
|
+
And the alt for image 3 should be "image 3"
|
|
382
|
+
|
|
383
|
+
Scenario: Selecting forms based on a class declaration
|
|
384
|
+
When I select the forms using the generated method
|
|
385
|
+
Then I should have 3 forms
|
|
386
|
+
And the action for form 1 should be "form1"
|
|
387
|
+
And the action for form 2 should be "form2"
|
|
388
|
+
And the action for form 3 should be "form3"
|
|
389
|
+
|
|
390
|
+
Scenario: Selecting list items based on a class declaration
|
|
391
|
+
When I select the list items using the generated method
|
|
392
|
+
Then I should have 3 list items
|
|
393
|
+
And the text for list item 1 should be "Item One"
|
|
394
|
+
And the text for list item 2 should be "Item Two"
|
|
395
|
+
And the text for list item 3 should be "Item Three"
|
|
396
|
+
|
|
397
|
+
Scenario: Selecting unordered lists based on a class declaration
|
|
398
|
+
When I select the unordered lists using the generated method
|
|
399
|
+
Then I should have 3 unordered lists
|
|
400
|
+
And the text for the first item in unordered list 1 should be "Item One"
|
|
401
|
+
And the text for the first item in unordered list 2 should be "Item Four"
|
|
402
|
+
And the text for the first item in unordered list 3 should be "Item Five"
|
|
403
|
+
|
|
404
|
+
Scenario: Selecting ordered lists based on a class declaration
|
|
405
|
+
When I select the ordered lists using the generated method
|
|
406
|
+
Then I should have 3 ordered lists
|
|
407
|
+
And the text for the first item in ordered list 1 should be "Number One"
|
|
408
|
+
And the text for the first item in ordered list 2 should be "Number Two"
|
|
409
|
+
And the text for the first item in ordered list 3 should be "Number Three"
|
|
410
|
+
|
|
411
|
+
Scenario: Selecting h1s based on a class declaration
|
|
412
|
+
When I select the h1s using the generated method
|
|
413
|
+
Then I should have 3 h1s
|
|
414
|
+
And the text for h1 1 should be "H1 One"
|
|
415
|
+
And the text for h1 2 should be "H1 Two"
|
|
416
|
+
And the text for h1 3 should be "H1 Three"
|
|
417
|
+
|
|
418
|
+
Scenario: Selecting h2s based on a class declaration
|
|
419
|
+
When I select the h2s using the generated method
|
|
420
|
+
Then I should have 3 h2s
|
|
421
|
+
And the text for h2 1 should be "H2 One"
|
|
422
|
+
And the text for h2 2 should be "H2 Two"
|
|
423
|
+
And the text for h2 3 should be "H2 Three"
|
|
424
|
+
|
|
425
|
+
Scenario: Selecting h3s based on a class declaration
|
|
426
|
+
When I select the h3s using the generated method
|
|
427
|
+
Then I should have 3 h3s
|
|
428
|
+
And the text for h3 1 should be "H3 One"
|
|
429
|
+
And the text for h3 2 should be "H3 Two"
|
|
430
|
+
And the text for h3 3 should be "H3 Three"
|
|
431
|
+
|
|
432
|
+
Scenario: Selecting h4s based on a class declaration
|
|
433
|
+
When I select the h4s using the generated method
|
|
434
|
+
Then I should have 3 h4s
|
|
435
|
+
And the text for h4 1 should be "H4 One"
|
|
436
|
+
And the text for h4 2 should be "H4 Two"
|
|
437
|
+
And the text for h4 3 should be "H4 Three"
|
|
438
|
+
|
|
439
|
+
Scenario: Selecting h5s based on a class declaration
|
|
440
|
+
When I select the h5s using the generated method
|
|
441
|
+
Then I should have 3 h5s
|
|
442
|
+
And the text for h5 1 should be "H5 One"
|
|
443
|
+
And the text for h5 2 should be "H5 Two"
|
|
444
|
+
And the text for h5 3 should be "H5 Three"
|
|
445
|
+
|
|
446
|
+
Scenario: Selecting h6s based on a class declaration
|
|
447
|
+
When I select the h6s using the generated method
|
|
448
|
+
Then I should have 3 h6s
|
|
449
|
+
And the text for h6 1 should be "H6 One"
|
|
450
|
+
And the text for h6 2 should be "H6 Two"
|
|
451
|
+
And the text for h6 3 should be "H6 Three"
|
|
452
|
+
|
|
453
|
+
Scenario: Selecting paragraphs based on a class declaration
|
|
454
|
+
When I select the paragraphs using the generated method
|
|
455
|
+
Then I should have 3 paragraphs
|
|
456
|
+
And the text for paragraph 1 should be "Paragraph One"
|
|
457
|
+
And the text for paragraph 2 should be "Paragraph Two"
|
|
458
|
+
And the text for paragraph 3 should be "Paragraph Three"
|
|
459
|
+
|
|
460
|
+
Scenario: Selecting labels based on a class declaration
|
|
461
|
+
When I select the labels using the generated method
|
|
462
|
+
Then I should have 3 labels
|
|
463
|
+
And the text for label 1 should be "Label 1"
|
|
464
|
+
And the text for label 2 should be "Label 2"
|
|
465
|
+
And the text for label 3 should be "Label 3"
|
|
466
|
+
|
|
467
|
+
Scenario: Selecting file fields based on a class declaration
|
|
468
|
+
When I select the file fields using the generated method
|
|
469
|
+
Then I should have 3 file fields
|
|
470
|
+
And the title for file field 1 should be "File Field 1"
|
|
471
|
+
And the title for file field 2 should be "File Field 2"
|
|
472
|
+
And the title for file field 3 should be "File Field 3"
|
|
473
|
+
|
|
474
|
+
Scenario: Selecting all divs using a block instead of an identifier
|
|
475
|
+
When I select the divs using a block
|
|
476
|
+
Then I should have 3 divs
|
|
477
|
+
And the text of div 1 should be "Div 1"
|
|
478
|
+
And the text of div 2 should be "Div 2"
|
|
479
|
+
And the text of div 3 should be "Div 3"
|
|
480
|
+
|
|
481
|
+
Scenario: Selecting multiple generic element types
|
|
482
|
+
When I select the multiple elements with a tag label
|
|
483
|
+
Then I should have 3 labels
|
|
484
|
+
And the text for label 1 should be "Label 1"
|
|
485
|
+
And the text for label 2 should be "Label 2"
|
|
486
|
+
And the text for label 3 should be "Label 3"
|
|
487
|
+
|
|
488
|
+
Scenario: Selecting bs using an identifier
|
|
489
|
+
When I select the bs
|
|
490
|
+
Then I should have 2 bs
|
|
491
|
+
And the text for b 1 should be "One B"
|
|
492
|
+
And the text for b 2 should be "Two B"
|
|
493
|
+
|
|
494
|
+
Scenario: Selecting is using an identifier
|
|
495
|
+
When I select the is
|
|
496
|
+
Then I should have 2 is
|
|
497
|
+
And the text for i 1 should be "One I"
|
|
498
|
+
And the text for i 2 should be "Two I"
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
Feature: Nested Elements
|
|
2
|
+
|
|
3
|
+
Background:
|
|
4
|
+
Given I am on the nested elements page
|
|
5
|
+
|
|
6
|
+
Scenario: Finding a link within a div
|
|
7
|
+
When I search for a link located in a div
|
|
8
|
+
Then I should be able to click the nested link
|
|
9
|
+
|
|
10
|
+
Scenario: Finding a button within a div
|
|
11
|
+
When I search for a button located in a div
|
|
12
|
+
Then I should be able to click the nested button
|
|
13
|
+
|
|
14
|
+
Scenario: Finding a text field within a div
|
|
15
|
+
When I search for a text field located in a div
|
|
16
|
+
Then I should be able to type "123abc" in the nested text field
|
|
17
|
+
|
|
18
|
+
Scenario: Finding a hidden field within a div
|
|
19
|
+
When I search for a hidden field located in a div
|
|
20
|
+
Then I should be able to see that the nested hidden field contains "LeanDog"
|
|
21
|
+
|
|
22
|
+
Scenario: Finding a text area within a div
|
|
23
|
+
When I search for a text area located in a div
|
|
24
|
+
Then I should be able to type "abcdefg" in the nested text area
|
|
25
|
+
|
|
26
|
+
Scenario: Finding a select list within a div
|
|
27
|
+
When I search for a select list located in a div
|
|
28
|
+
Then I should be able to select "Test 2" in the nested select list
|
|
29
|
+
|
|
30
|
+
Scenario: Finding a checkbox within a div
|
|
31
|
+
When I search for a checkbox located in a div
|
|
32
|
+
Then I should be able to check the nested checkbox
|
|
33
|
+
|
|
34
|
+
Scenario: Finding a radio button within a div
|
|
35
|
+
When I search for a radio button located in a div
|
|
36
|
+
Then I should be able to select the nested radio button
|
|
37
|
+
|
|
38
|
+
Scenario: Finding a div within a div
|
|
39
|
+
When I search for a div located in a div
|
|
40
|
+
Then I should see the text "page-object rocks!" in the nested div
|
|
41
|
+
|
|
42
|
+
Scenario: Finding a span within a div
|
|
43
|
+
When I search for a span located in a div
|
|
44
|
+
Then I should see the text "My alert" in the nested span
|
|
45
|
+
|
|
46
|
+
Scenario: Finding a table within a div
|
|
47
|
+
When I search for a table located in a div
|
|
48
|
+
Then the data for row "1" of the nested table should be "Data1" and "Data2"
|
|
49
|
+
|
|
50
|
+
Scenario: Finding a table cell within a div
|
|
51
|
+
When I search the second table cell located in a table in a div
|
|
52
|
+
Then the nested table cell should contain "Data2"
|
|
53
|
+
|
|
54
|
+
Scenario: Finding an image within a div
|
|
55
|
+
When I search for an image located in a div
|
|
56
|
+
Then the nested image should be "106" pixels wide
|
|
57
|
+
And the nested image should be "106" pixels tall
|
|
58
|
+
|
|
59
|
+
Scenario: Finding a form within a div
|
|
60
|
+
When I search for a form located in a div
|
|
61
|
+
Then I should be able to submit the nested form
|
|
62
|
+
|
|
63
|
+
Scenario: Finding an ordered list within a div
|
|
64
|
+
When I search for an ordered list located in a div
|
|
65
|
+
Then the first nested list items text should be "Number One"
|
|
66
|
+
|
|
67
|
+
Scenario: Finding an unordered list within a div
|
|
68
|
+
When I search for an unordered list located in a div
|
|
69
|
+
Then the first nested list items text should be "Item One"
|
|
70
|
+
|
|
71
|
+
Scenario: Finding a list item nested in an ordered list within a div
|
|
72
|
+
When I search for a list item nested in a ordered list in a div
|
|
73
|
+
Then I should see the nested list items text should be "Number One"
|
|
74
|
+
|
|
75
|
+
Scenario: Finding a h1 within a div
|
|
76
|
+
When I search for a h1 located in a div
|
|
77
|
+
Then I should see the nested h1s text should be "h1's are cool"
|
|
78
|
+
|
|
79
|
+
Scenario: Finding a h2 within a div
|
|
80
|
+
When I search for a h2 located in a div
|
|
81
|
+
Then I should see the nested h2s text should be "h2's are cool"
|
|
82
|
+
|
|
83
|
+
Scenario: Finding a h3 within a div
|
|
84
|
+
When I search for a h3 located in a div
|
|
85
|
+
Then I should see the nested h3s text should be "h3's are cool"
|
|
86
|
+
|
|
87
|
+
Scenario: Finding a h4 within a div
|
|
88
|
+
When I search for a h4 located in a div
|
|
89
|
+
Then I should see the nested h4s text should be "h4's are cool"
|
|
90
|
+
|
|
91
|
+
Scenario: Finding a h5 within a div
|
|
92
|
+
When I search for a h5 located in a div
|
|
93
|
+
Then I should see the nested h5s text should be "h5's are cool"
|
|
94
|
+
|
|
95
|
+
Scenario: Finding a h6 within a div
|
|
96
|
+
When I search for a h6 located in a div
|
|
97
|
+
Then I should see the nested h6s text should be "h6's are cool"
|
|
98
|
+
|
|
99
|
+
Scenario: Finding a paragraph within a div
|
|
100
|
+
When I search for a paragraph located in a div
|
|
101
|
+
Then I should see the nested paragraphs text should be "This is a paragraph."
|
|
102
|
+
|
|
103
|
+
Scenario: Finding a file field within a div
|
|
104
|
+
When I search for a file field located in a div
|
|
105
|
+
Then I should be able to retrieve the nested file field
|
|
106
|
+
|
|
107
|
+
Scenario: Finding a label within a div
|
|
108
|
+
When I search for a label located in a div
|
|
109
|
+
Then I should see the nested labels text should be "page-object is the best!"
|
|
110
|
+
|
|
111
|
+
Scenario: Unordered list nested in another Unordered list
|
|
112
|
+
When I get the outter unordered list
|
|
113
|
+
Then I should see "One" for list item 1
|
|
114
|
+
And I should see "Two" for list item 2
|
|
115
|
+
And I should see "Three" for list item 3
|
|
116
|
+
|
|
117
|
+
Scenario: Ordered list nested in another Ordered list
|
|
118
|
+
When I get the outter ordered list
|
|
119
|
+
Then I should see "One" for list item 1
|
|
120
|
+
And I should see "Two" for list item 2
|
|
121
|
+
And I should see "Three" for list item 3
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
Feature: Ordered list
|
|
2
|
+
|
|
3
|
+
Background:
|
|
4
|
+
Given I am on the static elements page
|
|
5
|
+
|
|
6
|
+
Scenario: Getting the first element from the ordered list
|
|
7
|
+
When I get the first item from the ordered list
|
|
8
|
+
Then the list item's text should be "Number One"
|
|
9
|
+
|
|
10
|
+
@name
|
|
11
|
+
Scenario Outline: Locating ordered lists on the page
|
|
12
|
+
When I locate the ordered list by "<locate_by>"
|
|
13
|
+
And I get the first item from the list
|
|
14
|
+
Then the list item's text should be "Number One"
|
|
15
|
+
And the list should contain 3 items
|
|
16
|
+
And each item should contain "Number"
|
|
17
|
+
|
|
18
|
+
Examples:
|
|
19
|
+
| locate_by |
|
|
20
|
+
| id |
|
|
21
|
+
| class |
|
|
22
|
+
| xpath |
|
|
23
|
+
| index |
|
|
24
|
+
| css |
|
|
25
|
+
|
|
26
|
+
@multi
|
|
27
|
+
Scenario Outline: Locating ordered lists using multiple parameters
|
|
28
|
+
When I search for the ordered list by "<param1>" and "<param2>"
|
|
29
|
+
And I get the first item from the list
|
|
30
|
+
Then the list items text should be "Number One"
|
|
31
|
+
|
|
32
|
+
Examples:
|
|
33
|
+
| param1 | param2 |
|
|
34
|
+
| class | index |
|
|
35
|
+
|
|
36
|
+
@locator
|
|
37
|
+
Scenario: Finding a ordered list dynamically
|
|
38
|
+
When I search for the ordered list while the script is executing
|
|
39
|
+
Then I should see that the ordered list exists
|
|
40
|
+
When I get the first item from the list
|
|
41
|
+
Then the list items text should be "Number One"
|
|
42
|
+
|
|
43
|
+
Scenario: Getting the text for an ordered list
|
|
44
|
+
Then the text for the ordered list should contain "Number One"
|
|
45
|
+
And the text for the ordered list should contain "Number Two"
|
|
46
|
+
And the text for the ordered list should contain "Number Three"
|