meeane-page-object 0.1.8

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