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,206 @@
1
+ <html>
2
+ <head>
3
+ <title>Static Elements Page</title>
4
+ </head>
5
+ <body>
6
+ <p id='p_id' name='p_name' class='p_class'>Static Elements Page</p>
7
+
8
+ <label for="text_field_id">Text Field</label>
9
+ <input id="text_field_id" name="text_field_name" class="text_field_class"
10
+ title="text_field_title" data-field="title" size="40" type="text"/>
11
+
12
+ <input id="hidden_field_id" name="hidden_field_name" class="hidden_field_class"
13
+ size="40" type="hidden" value="12345"/>
14
+
15
+ <label for="text_area_id">Text Area</label>
16
+ <textarea rows="2" cols="20" id="text_area_id" class="text_area_class" name="text_area_name"></textarea>
17
+
18
+ <label for="sel_list_id">Select List</label>
19
+ <select name="sel_list_name" id="sel_list_id" class="sel_list_class">
20
+ <option value="option1">Test 1</option>
21
+ <option value="option2">Test 2</option>
22
+ <option value="option3">Test/Test 3</option>
23
+ </select>
24
+
25
+ <select multiple="multiple" id="sel_list_multiple">
26
+ <option value="option1" selected="true">Test 1</option>
27
+ <option value="option2">Test 2</option>
28
+ <option value="option3" selected="true">Test 3</option>
29
+ </select>
30
+
31
+ <img src="planets.gif" width="145" height="126" alt="Planets" usemap="#planetmap"/>
32
+ <map id ="map" name="planetmap">
33
+ <area id="area" name="area" class="area" shape="rect" coords="0,0,82,126" href="sun.html"/>
34
+ <area shape="circle" coords="90,58,3" href="mercur.html"/>
35
+ <area shape="circle" coords="124,58,8" href="venus.html"/>
36
+ </map>
37
+
38
+ <canvas id="canvas" name="canvas" class="canvas" width="200" height="100"></canvas>
39
+ <script type="text/javascript">
40
+ var c=document.getElementById("myCanvas");
41
+ var ctx=c.getContext("2d");
42
+ ctx.fillStyle="#FF0000";
43
+ ctx.fillRect(0,0,150,75);
44
+ </script>
45
+
46
+ <audio controls id="audio" name="audio" class="audio">
47
+ <source src="04-Death_Becomes_Fur.mp4"
48
+ type='audio/mp4'/>
49
+ <source src="04-Death_Becomes_Fur.oga"
50
+ type='audio/ogg; codecs=vorbis'/>
51
+ <p>Your user agent does not support the HTML5 Audio element.</p>
52
+ </audio>
53
+
54
+ <video width="320" height="240" controls="controls" id="video" name="video" class="video">
55
+ <source src="movie.mp4" type="video/mp4" />
56
+ <source src="movie.ogg" type="video/ogg" />
57
+ Your browser does not support the video tag.
58
+ </video>
59
+
60
+ <svg width="100" height="100" id="the_svg">
61
+ <circle cx="50" cy="50" r="40" fill="red" stroke="blue" stroke-width="5" />
62
+ </svg>
63
+
64
+ <a href="success.html" id="link_id" name="link_name" class="link_class" title="link_title">Google Search</a>
65
+
66
+ <label for="cb_id">Checkbox</label>
67
+ <input id="cb_id" name="cb_name" class="cb_class" type="checkbox" value="1"/>
68
+
69
+ <label for="milk_id">Radio</label>
70
+ <input type="radio" id="milk_id" name="milk_name" class="milk_class" value="Milk"> Milk <br/>
71
+ <input type="radio" id="butter_id" name="butter_name" class="butter_class" value="Butter">Butter
72
+
73
+ <br/>
74
+ <label>Radio Button Group</label>
75
+ <input type="radio" name="fav_cheese" value="ched">Cheddar</input>
76
+ <input type="radio" name="fav_cheese" value="emmen">Emmental</input>
77
+ <input type="radio" name="fav_cheese" value="muen">Muenster</input>
78
+ <br/>
79
+
80
+ <div id="div_id" name="div_name" class="div_class" title="div_title">
81
+ page-object rocks!
82
+ </div>
83
+ <div data-entity="test">
84
+ found using data-entity
85
+ </div>
86
+
87
+ <span id="span_id" name="span_name" class="span_class" title="span_title">
88
+ My alert
89
+ </span>
90
+
91
+ <label id="label_id" name="label_name" class="label_class">
92
+ page-object is the best!
93
+ </label>
94
+
95
+ <table id='table_id' name='table_name' class='table_class' border='1'>
96
+ <thead>
97
+ <tr>
98
+ <th>Table</th>
99
+ <th>Header</th>
100
+ </tr>
101
+ </thead>
102
+ <tbody>
103
+ <tr>
104
+ <td>Data1</td>
105
+ <td>Data2</td>
106
+ </tr>
107
+ <tr>
108
+ <td>Data3</td>
109
+ <td id='cell_id' name='cell_name' class='cell_class'>Data4</td>
110
+ </tr>
111
+ </tbody>
112
+ </table>
113
+
114
+ <table id='table_with_thead_id' border='1'>
115
+ <thead>
116
+ <tr>
117
+ <th>Col1</th>
118
+ <th>Col2</th>
119
+ </tr>
120
+ </thead>
121
+ <tbody>
122
+ <tr>
123
+ <td>Data1</td>
124
+ <td>Data2</td>
125
+ </tr>
126
+ <tr>
127
+ <td>Data3</td>
128
+ <td>Data4</td>
129
+ </tr>
130
+ <tr>
131
+ <td>Data5</td>
132
+ </tr>
133
+ </tbody>
134
+ </table>
135
+
136
+ <form method="get" action="success.html">
137
+ <input id='button_id' name='button_name' class='button_class' type="submit" value="Click Me"/>
138
+ <input id='button_image_id' type='image' src='images/submit.gif' alt='Submit'/>
139
+ <button type='button' id='btn_id' name='btn_name' class='btn_class'>Click Me Too</button>
140
+ <input value="Disabled" disabled="true" type ="submit"/>
141
+ </form>
142
+
143
+ <img src="images/circle.png" id="image_id" name="image_name" class="image_class", alt="image_alt">
144
+
145
+ <form id="form_id" class="form_class" name="form_name" action="/">
146
+ </form>
147
+
148
+ <label for="file_field_id">File Field</label>
149
+ <input type="file" name="file_field_name" id="file_field_id" class="file_field_class" title="file_field_title" />
150
+
151
+ <ul id="ul_id" name="ul_name" class="ul_class">
152
+ <li id="li_id" name="li_name" class="li_class">Item One</li>
153
+ <li>Item Two</li>
154
+ <li>Item Three</li>
155
+ </ul>
156
+
157
+ <ol id="ol_id" name="ol_name" class="ol_class">
158
+ <li>Number One</li>
159
+ <li>Number Two</li>
160
+ <li>Number Three</li>
161
+ </ol>
162
+
163
+ <a href="success.html">Hello</a>
164
+ <a href="success.html">Hello</a>
165
+ <a href="success.html">Hello</a>
166
+
167
+ <input id=alert_button type=button onclick="alert('I am an alert')" value=Alert>
168
+ <input id=alert_button_that_reloads type=button onclick="alert('I am an alert'); location.reload()" value="Alert that Reloads">
169
+ <input id=confirm_button type=button onclick="this.value = confirm('set the value')" value=Confirm>
170
+ <input id=confirm_button_that_reloads type=button onclick="if(confirm('set the value')) location.reload()" value="Confirm that Reloads">
171
+ <input id=prompt_button type=button onclick='this.value = prompt("enter your name", "John Doe")' value=Prompt>
172
+
173
+ <h1 id="h1_id" class="h1_class" name="h1_name">h1's are cool</h1>
174
+ <h2 id="h2_id" class="h2_class" name="h2_name">h2's are cool</h2>
175
+ <h3 id="h3_id" class="h3_class" name="h3_name">h3's are cool</h3>
176
+ <h4 id="h4_id" class="h4_class" name="h4_name">h4's are cool</h4>
177
+ <h5 id="h5_id" class="h5_class" name="h5_name">h5's are cool</h5>
178
+ <h6 id="h6_id" class="h6_class" name="h6_name">h6's are cool</h6>
179
+
180
+ <a href="success.html" target="_blank">New Window</a>
181
+ <a href="failure.html" target="_blank">Another New Window</a>
182
+
183
+ <input type="text" id="onfocus_text_field" onfocus="document.getElementById('onfocus_test').innerHTML = 'changed by onfocus event'"/>
184
+ <div id="onfocus_test"></div>
185
+
186
+ <div id="parent_div">
187
+ <a href="success.html" id="child">Success</a>
188
+ </div>
189
+
190
+ <article id='article_id'>HTML 5 Article</article>
191
+ <header id='header_id'>HTML 5 Header</header>
192
+ <footer id='footer_id'>HTML 5 Footer</footer>
193
+
194
+ <details id='details_id'>
195
+ <summary id='summary_id'>The summary</summary>
196
+ The details
197
+ </details>
198
+
199
+ <figure id='figure_id'>
200
+ <img src="images/img_pulpit.jpg" alt="The Pulpit Rock" width="304" height="228">
201
+ </figure>
202
+
203
+ </body>
204
+ </html>
205
+
206
+
@@ -0,0 +1,8 @@
1
+ <html>
2
+ <head>
3
+ <title>Success</title>
4
+ </head>
5
+ <body>
6
+ <h1>Success</h1>
7
+ </body>
8
+ </html>
Binary file
@@ -0,0 +1,7 @@
1
+ <html>
2
+ <head>
3
+ </head>
4
+ <body>
5
+ <p><img border="0" src="sun.gif" width="99" height="98"></p>
6
+ </body>
7
+ </html>
@@ -0,0 +1,50 @@
1
+ Feature: Image
2
+
3
+ Background:
4
+ Given I am on the static elements page
5
+
6
+ Scenario: Getting the image element
7
+ When I get the image element
8
+ Then the image should be "106" pixels wide
9
+ And the image should be "106" pixels tall
10
+
11
+ Scenario Outline: Locating an image on the page
12
+ When I get the image element by "<search_by>"
13
+ Then the image should be "106" pixels wide
14
+ And the image should be "106" pixels tall
15
+
16
+ Scenarios:
17
+ | search_by |
18
+ | id |
19
+ | class |
20
+ | name |
21
+ | xpath |
22
+ | index |
23
+ | alt |
24
+ | src |
25
+
26
+ @selenium_only
27
+ Scenario Outline: Locating an image on the page
28
+ When I get the image element by "<search_by>"
29
+ Then the image should be "106" pixels wide
30
+ And the image should be "106" pixels tall
31
+
32
+ Scenarios:
33
+ | search_by |
34
+ | css |
35
+
36
+ Scenario Outline: Locating an image using multiple parameters
37
+ When I get the image element by "<param1>" and "<param2>"
38
+ Then the image should be "106" pixels wide
39
+ And the image should be "106" pixels tall
40
+
41
+ Scenarios:
42
+ | param1 | param2 |
43
+ | class | index |
44
+ | name | index |
45
+
46
+ Scenario: Finding an image dynamically
47
+ When I get the image element while the script is executing
48
+ Then I should see that the image exists
49
+ And the image should be "106" pixels wide
50
+ And the image should be "106" pixels tall
@@ -0,0 +1,98 @@
1
+ Feature: Indexed Property
2
+ In order to interact with recurring sequences of elements with an index
3
+ Testers will need access and interrogation ability
4
+
5
+ Background:
6
+ Given I am on the indexed property page
7
+
8
+ Scenario Outline: Locating indexed text fields in a table on the Page by id
9
+ When I search for the elements for index "<index>"
10
+ And I type "I found it" into the table's indexed text field by id
11
+ Then The table's indexed text field by id should contain "I found it"
12
+
13
+ Examples:
14
+ | index |
15
+ | foo |
16
+ | 123 |
17
+ | 12test |
18
+
19
+ Scenario Outline: Locating indexed text fields in a table on the Page by name
20
+ When I search for the elements for index "<index>"
21
+ And I type "I found it" into the table's indexed text field by name
22
+ Then The table's indexed text field by name should contain "I found it"
23
+
24
+ Examples:
25
+ | index |
26
+ | foo |
27
+ | 123 |
28
+ | 12test |
29
+
30
+ Scenario Outline: Locating indexed radio buttons in a table on the Page
31
+ When I search for the elements for index "<index>"
32
+ And I select the indexed radio button
33
+ Then The indexed radio button should be selected
34
+
35
+ Examples:
36
+ | index |
37
+ | foo |
38
+ | 123 |
39
+ | 12test |
40
+
41
+ Scenario Outline: Locating indexed checkboxes in a table on the Page
42
+ When I search for the elements for index "<index>"
43
+ And I check the indexed checkbox
44
+ Then The indexed checkbox should be checked
45
+
46
+ Examples:
47
+ | index |
48
+ | foo |
49
+ | 123 |
50
+ | 12test |
51
+
52
+ Scenario Outline: Locating indexed text areas in a table on the Page
53
+ When I search for the elements for index "<index>"
54
+ And I type "I found it" into the table's indexed text area
55
+ Then The table's indexed text area should contain "I found it"
56
+
57
+ Examples:
58
+ | index |
59
+ | foo |
60
+ | 123 |
61
+ | 12test |
62
+
63
+ Scenario Outline: Locating indexed buttons in a table on the Page
64
+ When I search for the elements for index "<index>"
65
+ Then I should see that the indexed button exists
66
+ And I should be able to click the indexed button
67
+
68
+ Examples:
69
+ | index |
70
+ | foo |
71
+ | 123 |
72
+ | 12test |
73
+
74
+ Scenario Outline: Locating indexed text fields outside a table on the Page
75
+ When I search for the elements for index "<index>"
76
+ And I type "I found it" into the regular indexed text field by id
77
+ Then The regular indexed text field by id should contain "I found it"
78
+
79
+ Examples:
80
+ | index |
81
+ | foo |
82
+ | 123 |
83
+ | 12test |
84
+
85
+ Scenario: Element on first indexed property but not second
86
+ When I search for an element that is on an indexed property
87
+ And I search for the element on another indexed property it is not on
88
+ Then I should see that the element doesn't exist
89
+
90
+ Scenario: Index on first indexed property but not on second
91
+ When I search for an element by an index on an indexed property
92
+ And I search using the index which is not on another indexed property
93
+ Then I should see that the element doesn't exist for that index
94
+
95
+ Scenario: Index on first indexed property and different on second
96
+ When I search for an element with text by an index on an indexed property
97
+ And I search using an index which is on another indexed property
98
+ Then I should see the content of the element on the second indexed property
@@ -0,0 +1,28 @@
1
+ Feature: Handling javascript events
2
+
3
+ Background:
4
+
5
+ Scenario: Waiting for ajax to complete with jQuery
6
+ Given I am on jQuery example page
7
+ When I ask to compute "2 + 2"
8
+ Then I should be able to wait for the answer "4"
9
+
10
+ Scenario: Waiting for ajax to complete with Prototype
11
+ Given I am on the Prototype example page
12
+ When I ask to compute "2 + 2"
13
+ Then I should be able to wait for the answer "4"
14
+
15
+ Scenario: Executing javascript in the browser
16
+ Given I am on the static elements page
17
+ Given I execute the javascript "return 2 + 2;"
18
+ Then I should get the answer "4"
19
+
20
+ Scenario: Executing javascript in the browser with value argument
21
+ Given I am on the static elements page
22
+ Given I execute the javascript "return 2 + Number(arguments[0]);" with an argument of "2"
23
+ Then I should get the answer "4"
24
+
25
+ Scenario: Executing javascript in the browser with element argument
26
+ Given I am on the static elements page
27
+ Given I execute the javascript "arguments[0].value = 'abcDEF';" with a text field argument
28
+ Then the text field should contain "abcDEF"
@@ -0,0 +1,46 @@
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
+ | css |
32
+
33
+ Scenario Outline: Locating labels using multiple parameters
34
+ When I search for the label by "<param1>" and "<param2>"
35
+ Then the text should be "page-object is the best!"
36
+
37
+ Scenarios:
38
+ | param1 | param2 |
39
+ | class | index |
40
+ | name | index |
41
+
42
+ Scenario: Finding a label dynamically
43
+ When I get the text from a label while the script is executing
44
+ Then I should see that the label exists
45
+ And the text should be "page-object is the best!"
46
+
@@ -0,0 +1,52 @@
1
+ Feature: Links
2
+ In order to interact with links
3
+ Testers will need access and interrogation ability
4
+
5
+ Background:
6
+ Given I am on the static elements page
7
+
8
+ Scenario: Selecting a link
9
+ When I select the link labeled "Google Search"
10
+ Then the page should contain the text "Success"
11
+
12
+ Scenario Outline: Locating links on the Page
13
+ When I search for the link by "<search_by>"
14
+ Then I should be able to select the link
15
+
16
+ Scenarios:
17
+ | search_by |
18
+ | id |
19
+ | class |
20
+ | name |
21
+ | xpath |
22
+ | link |
23
+ | link_text |
24
+ | text |
25
+ | index |
26
+ | href |
27
+ | css |
28
+ | title |
29
+
30
+ Scenario: Support for multiple parameters
31
+ When I select a link labeled "Hello" and index "0"
32
+ Then the page should contain the text "Success"
33
+ Given I am on the static elements page
34
+ When I select a link labeled "Hello" and index "1"
35
+ Then the page should contain the text "Success"
36
+
37
+ Scenario: Retrieve a Link
38
+ When I retrieve a link element
39
+ Then I should know it exists
40
+ And I should know it is visible
41
+
42
+ Scenario: Finding a link dynamically
43
+ When I select a link while the script is executing
44
+ And the page should contain the text "Success"
45
+
46
+ Scenario: Getting the href for a link
47
+ When I get the href for the link
48
+ Then I should know it was "success.html"
49
+
50
+ Scenario: Locating a link using a partial href
51
+ When I get the link using the href success
52
+ Then I should be able to click the link
@@ -0,0 +1,36 @@
1
+ Feature: List item
2
+
3
+ Background:
4
+ Given I am on the static elements page
5
+
6
+ Scenario: Getting the text from a list item
7
+ When I get the text from the list item
8
+ Then the text should be "Item One"
9
+
10
+ Scenario Outline: Locating list items on the page
11
+ When I search for the list item by "<search_by>"
12
+ Then the text should be "Item One"
13
+
14
+ Scenarios:
15
+ | search_by |
16
+ | id |
17
+ | class |
18
+ | xpath |
19
+ | index |
20
+ | name |
21
+ | text |
22
+ | css |
23
+
24
+ Scenario Outline: Locating list items using multiple parameters
25
+ When I search for the list item by "<param1>" and "<param2>"
26
+ Then the text should be "Item One"
27
+
28
+ Scenarios:
29
+ | param1 | param2 |
30
+ | class | index |
31
+ | name | index |
32
+
33
+ Scenario: Finding a list item dynamically
34
+ When I search for the list item while the script is executing
35
+ Then I should see that the list item exists
36
+ And the text should be "Item One"
@@ -0,0 +1,15 @@
1
+ Feature: handing modal dialogs
2
+
3
+ Background:
4
+ Given I am on the modal page
5
+
6
+
7
+ Scenario: Interacting with a modal dialog
8
+ When I open a modal dialog
9
+ Then I should be able to close the modal
10
+
11
+ Scenario: Nested modal dialogs
12
+ When I open a modal dialog
13
+ And I open another modal dialog from that one
14
+ #Then I should be able to close both modals
15
+