page_object 1.1.1

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 (272) 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 +7 -0
  7. data/ChangeLog +809 -0
  8. data/Gemfile +14 -0
  9. data/Guardfile +20 -0
  10. data/LICENSE +20 -0
  11. data/README.md +111 -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/bold.feature +21 -0
  18. data/features/button.feature +98 -0
  19. data/features/canvas.feature +37 -0
  20. data/features/check_box.feature +55 -0
  21. data/features/div.feature +45 -0
  22. data/features/element.feature +322 -0
  23. data/features/file_field.feature +40 -0
  24. data/features/form.feature +43 -0
  25. data/features/frames.feature +75 -0
  26. data/features/generic_elements.feature +29 -0
  27. data/features/gxt_table_extension.feature +24 -0
  28. data/features/headings.feature +97 -0
  29. data/features/hidden_field.feature +45 -0
  30. data/features/html/04-Death_Becomes_Fur.mp4 +0 -0
  31. data/features/html/04-Death_Becomes_Fur.oga +0 -0
  32. data/features/html/async.html +36 -0
  33. data/features/html/double_click.html +13 -0
  34. data/features/html/failure.html +8 -0
  35. data/features/html/frame_1.html +18 -0
  36. data/features/html/frame_2.html +16 -0
  37. data/features/html/frame_3.html +14 -0
  38. data/features/html/frames.html +12 -0
  39. data/features/html/hover.html +12 -0
  40. data/features/html/iframes.html +12 -0
  41. data/features/html/images/circle.png +0 -0
  42. data/features/html/images/img_pulpit.jpg +0 -0
  43. data/features/html/images/submit.gif +0 -0
  44. data/features/html/indexed_property.html +55 -0
  45. data/features/html/modal.html +17 -0
  46. data/features/html/modal_1.html +38 -0
  47. data/features/html/modal_2.html +27 -0
  48. data/features/html/movie.mp4 +0 -0
  49. data/features/html/movie.ogg +0 -0
  50. data/features/html/multi_elements.html +144 -0
  51. data/features/html/nested_elements.html +77 -0
  52. data/features/html/nested_frame_1.html +1 -0
  53. data/features/html/nested_frame_2.html +11 -0
  54. data/features/html/nested_frame_3.html +14 -0
  55. data/features/html/nested_frames.html +10 -0
  56. data/features/html/planets.gif +0 -0
  57. data/features/html/static_elements.html +207 -0
  58. data/features/html/success.html +8 -0
  59. data/features/html/sun.gif +0 -0
  60. data/features/html/sun.html +7 -0
  61. data/features/image.feature +50 -0
  62. data/features/indexed_property.feature +117 -0
  63. data/features/javascript.feature +28 -0
  64. data/features/label.feature +46 -0
  65. data/features/link.feature +52 -0
  66. data/features/list_item.feature +36 -0
  67. data/features/modal_dialog.feature +15 -0
  68. data/features/multi_elements.feature +492 -0
  69. data/features/nested_elements.feature +117 -0
  70. data/features/ordered_list.feature +56 -0
  71. data/features/page_level_actions.feature +90 -0
  72. data/features/paragraph.feature +35 -0
  73. data/features/radio_button.feature +58 -0
  74. data/features/radio_button_group.feature +29 -0
  75. data/features/sample-app/public/jquery-1.3.2.js +4376 -0
  76. data/features/sample-app/public/jquery.html +30 -0
  77. data/features/sample-app/public/prototype-1.6.0.3.js +4320 -0
  78. data/features/sample-app/public/prototype.html +35 -0
  79. data/features/sample-app/sample_app.rb +35 -0
  80. data/features/section.feature +132 -0
  81. data/features/select_list.feature +86 -0
  82. data/features/span.feature +37 -0
  83. data/features/step_definitions/accessor_steps.rb +64 -0
  84. data/features/step_definitions/area_steps.rb +19 -0
  85. data/features/step_definitions/async_steps.rb +83 -0
  86. data/features/step_definitions/audio_steps.rb +27 -0
  87. data/features/step_definitions/bold_steps.rb +12 -0
  88. data/features/step_definitions/button_steps.rb +48 -0
  89. data/features/step_definitions/canvas_steps.rb +15 -0
  90. data/features/step_definitions/check_box_steps.rb +35 -0
  91. data/features/step_definitions/div_steps.rb +19 -0
  92. data/features/step_definitions/element_steps.rb +266 -0
  93. data/features/step_definitions/file_field_steps.rb +19 -0
  94. data/features/step_definitions/form_steps.rb +19 -0
  95. data/features/step_definitions/frames_steps.rb +159 -0
  96. data/features/step_definitions/generic_element_steps.rb +31 -0
  97. data/features/step_definitions/gxt_table_steps.rb +58 -0
  98. data/features/step_definitions/headings_steps.rb +12 -0
  99. data/features/step_definitions/hidden_field_steps.rb +27 -0
  100. data/features/step_definitions/image_steps.rb +27 -0
  101. data/features/step_definitions/indexed_property_steps.rb +163 -0
  102. data/features/step_definitions/javascript_steps.rb +53 -0
  103. data/features/step_definitions/label_steps.rb +19 -0
  104. data/features/step_definitions/link_steps.rb +40 -0
  105. data/features/step_definitions/list_item_steps.rb +19 -0
  106. data/features/step_definitions/modal_dialog_steps.rb +62 -0
  107. data/features/step_definitions/multi_elements_steps.rb +541 -0
  108. data/features/step_definitions/nested_elements_steps.rb +212 -0
  109. data/features/step_definitions/ordered_list_steps.rb +23 -0
  110. data/features/step_definitions/page_level_actions_steps.rb +135 -0
  111. data/features/step_definitions/page_traversal_steps.rb +4 -0
  112. data/features/step_definitions/paragraph_steps.rb +28 -0
  113. data/features/step_definitions/radio_button_group_steps.rb +36 -0
  114. data/features/step_definitions/radio_button_steps.rb +27 -0
  115. data/features/step_definitions/section_steps.rb +268 -0
  116. data/features/step_definitions/select_list_steps.rb +65 -0
  117. data/features/step_definitions/span_steps.rb +19 -0
  118. data/features/step_definitions/table_cell_steps.rb +15 -0
  119. data/features/step_definitions/table_row_steps.rb +23 -0
  120. data/features/step_definitions/table_steps.rb +70 -0
  121. data/features/step_definitions/text_area_steps.rb +35 -0
  122. data/features/step_definitions/text_field_steps.rb +35 -0
  123. data/features/step_definitions/unordered_list_steps.rb +23 -0
  124. data/features/step_definitions/video_steps.rb +45 -0
  125. data/features/support/ajax_text_environment.rb +26 -0
  126. data/features/support/env.rb +8 -0
  127. data/features/support/hooks.rb +8 -0
  128. data/features/support/page.rb +382 -0
  129. data/features/support/persistent_browser.rb +70 -0
  130. data/features/support/targets/firefox14_osx.rb +6 -0
  131. data/features/support/targets/firefox14_windows7.rb +6 -0
  132. data/features/support/url_helper.rb +57 -0
  133. data/features/table.feature +122 -0
  134. data/features/table_cell.feature +45 -0
  135. data/features/table_row.feature +43 -0
  136. data/features/text_area.feature +51 -0
  137. data/features/text_field.feature +70 -0
  138. data/features/unordered_list.feature +56 -0
  139. data/features/video.feature +73 -0
  140. data/lib/page-object.rb +421 -0
  141. data/lib/page-object/accessors.rb +1412 -0
  142. data/lib/page-object/core_ext/string.rb +5 -0
  143. data/lib/page-object/element_locators.rb +21 -0
  144. data/lib/page-object/elements.rb +60 -0
  145. data/lib/page-object/elements/area.rb +31 -0
  146. data/lib/page-object/elements/audio.rb +9 -0
  147. data/lib/page-object/elements/bold.rb +11 -0
  148. data/lib/page-object/elements/button.rb +35 -0
  149. data/lib/page-object/elements/canvas.rb +23 -0
  150. data/lib/page-object/elements/check_box.rb +37 -0
  151. data/lib/page-object/elements/div.rb +19 -0
  152. data/lib/page-object/elements/element.rb +226 -0
  153. data/lib/page-object/elements/file_field.rb +38 -0
  154. data/lib/page-object/elements/form.rb +36 -0
  155. data/lib/page-object/elements/heading.rb +15 -0
  156. data/lib/page-object/elements/hidden_field.rb +22 -0
  157. data/lib/page-object/elements/image.rb +36 -0
  158. data/lib/page-object/elements/label.rb +19 -0
  159. data/lib/page-object/elements/link.rb +46 -0
  160. data/lib/page-object/elements/list_item.rb +19 -0
  161. data/lib/page-object/elements/media.rb +45 -0
  162. data/lib/page-object/elements/option.rb +10 -0
  163. data/lib/page-object/elements/ordered_list.rb +50 -0
  164. data/lib/page-object/elements/paragraph.rb +9 -0
  165. data/lib/page-object/elements/radio_button.rb +37 -0
  166. data/lib/page-object/elements/select_list.rb +42 -0
  167. data/lib/page-object/elements/span.rb +19 -0
  168. data/lib/page-object/elements/table.rb +79 -0
  169. data/lib/page-object/elements/table_cell.rb +28 -0
  170. data/lib/page-object/elements/table_row.rb +50 -0
  171. data/lib/page-object/elements/text_area.rb +38 -0
  172. data/lib/page-object/elements/text_field.rb +42 -0
  173. data/lib/page-object/elements/unordered_list.rb +51 -0
  174. data/lib/page-object/elements/video.rb +18 -0
  175. data/lib/page-object/indexed_properties.rb +40 -0
  176. data/lib/page-object/javascript/angularjs.rb +14 -0
  177. data/lib/page-object/javascript/jquery.rb +14 -0
  178. data/lib/page-object/javascript/prototype.rb +14 -0
  179. data/lib/page-object/javascript/yui.rb +19 -0
  180. data/lib/page-object/javascript_framework_facade.rb +80 -0
  181. data/lib/page-object/loads_platform.rb +45 -0
  182. data/lib/page-object/locator_generator.rb +131 -0
  183. data/lib/page-object/nested_elements.rb +17 -0
  184. data/lib/page-object/page_factory.rb +108 -0
  185. data/lib/page-object/page_populator.rb +83 -0
  186. data/lib/page-object/platforms.rb +18 -0
  187. data/lib/page-object/platforms/selenium_webdriver.rb +30 -0
  188. data/lib/page-object/platforms/selenium_webdriver/button.rb +15 -0
  189. data/lib/page-object/platforms/selenium_webdriver/check_box.rb +29 -0
  190. data/lib/page-object/platforms/selenium_webdriver/element.rb +291 -0
  191. data/lib/page-object/platforms/selenium_webdriver/file_field.rb +16 -0
  192. data/lib/page-object/platforms/selenium_webdriver/form.rb +16 -0
  193. data/lib/page-object/platforms/selenium_webdriver/image.rb +28 -0
  194. data/lib/page-object/platforms/selenium_webdriver/link.rb +23 -0
  195. data/lib/page-object/platforms/selenium_webdriver/ordered_list.rb +39 -0
  196. data/lib/page-object/platforms/selenium_webdriver/page_object.rb +1237 -0
  197. data/lib/page-object/platforms/selenium_webdriver/radio_button.rb +22 -0
  198. data/lib/page-object/platforms/selenium_webdriver/select_list.rb +93 -0
  199. data/lib/page-object/platforms/selenium_webdriver/surrogate_selenium_element.rb +42 -0
  200. data/lib/page-object/platforms/selenium_webdriver/table.rb +42 -0
  201. data/lib/page-object/platforms/selenium_webdriver/table_row.rb +43 -0
  202. data/lib/page-object/platforms/selenium_webdriver/text_area.rb +17 -0
  203. data/lib/page-object/platforms/selenium_webdriver/text_field.rb +17 -0
  204. data/lib/page-object/platforms/selenium_webdriver/unordered_list.rb +39 -0
  205. data/lib/page-object/platforms/watir_webdriver.rb +30 -0
  206. data/lib/page-object/platforms/watir_webdriver/check_box.rb +29 -0
  207. data/lib/page-object/platforms/watir_webdriver/element.rb +249 -0
  208. data/lib/page-object/platforms/watir_webdriver/file_field.rb +16 -0
  209. data/lib/page-object/platforms/watir_webdriver/form.rb +16 -0
  210. data/lib/page-object/platforms/watir_webdriver/image.rb +22 -0
  211. data/lib/page-object/platforms/watir_webdriver/link.rb +15 -0
  212. data/lib/page-object/platforms/watir_webdriver/ordered_list.rb +35 -0
  213. data/lib/page-object/platforms/watir_webdriver/page_object.rb +1082 -0
  214. data/lib/page-object/platforms/watir_webdriver/radio_button.rb +22 -0
  215. data/lib/page-object/platforms/watir_webdriver/select_list.rb +74 -0
  216. data/lib/page-object/platforms/watir_webdriver/table.rb +38 -0
  217. data/lib/page-object/platforms/watir_webdriver/table_row.rb +37 -0
  218. data/lib/page-object/platforms/watir_webdriver/text_area.rb +23 -0
  219. data/lib/page-object/platforms/watir_webdriver/text_field.rb +16 -0
  220. data/lib/page-object/platforms/watir_webdriver/unordered_list.rb +36 -0
  221. data/lib/page-object/sections.rb +29 -0
  222. data/lib/page-object/version.rb +4 -0
  223. data/lib/page-object/widgets.rb +133 -0
  224. data/page_object.gemspec +31 -0
  225. data/pageobject.gems +1 -0
  226. data/spec/page-object/accessors_spec.rb +40 -0
  227. data/spec/page-object/element_locators_spec.rb +1122 -0
  228. data/spec/page-object/elements/area_spec.rb +45 -0
  229. data/spec/page-object/elements/bold_spec.rb +29 -0
  230. data/spec/page-object/elements/button_spec.rb +64 -0
  231. data/spec/page-object/elements/canvas_spec.rb +40 -0
  232. data/spec/page-object/elements/check_box_spec.rb +49 -0
  233. data/spec/page-object/elements/div_spec.rb +28 -0
  234. data/spec/page-object/elements/element_spec.rb +114 -0
  235. data/spec/page-object/elements/file_field_spec.rb +39 -0
  236. data/spec/page-object/elements/form_spec.rb +28 -0
  237. data/spec/page-object/elements/heading_spec.rb +48 -0
  238. data/spec/page-object/elements/hidden_field_spec.rb +28 -0
  239. data/spec/page-object/elements/image_spec.rb +66 -0
  240. data/spec/page-object/elements/label_spec.rb +29 -0
  241. data/spec/page-object/elements/link_spec.rb +49 -0
  242. data/spec/page-object/elements/list_item_spec.rb +29 -0
  243. data/spec/page-object/elements/nested_element_spec.rb +254 -0
  244. data/spec/page-object/elements/option_spec.rb +11 -0
  245. data/spec/page-object/elements/ordered_list_spec.rb +94 -0
  246. data/spec/page-object/elements/paragraph_spec.rb +27 -0
  247. data/spec/page-object/elements/select_list_spec.rb +142 -0
  248. data/spec/page-object/elements/selenium/radio_button_spec.rb +44 -0
  249. data/spec/page-object/elements/selenium/text_field_spec.rb +49 -0
  250. data/spec/page-object/elements/selenium_element_spec.rb +177 -0
  251. data/spec/page-object/elements/span_spec.rb +26 -0
  252. data/spec/page-object/elements/table_cell_spec.rb +21 -0
  253. data/spec/page-object/elements/table_row_spec.rb +70 -0
  254. data/spec/page-object/elements/table_spec.rb +98 -0
  255. data/spec/page-object/elements/text_area_spec.rb +39 -0
  256. data/spec/page-object/elements/unordered_list_spec.rb +94 -0
  257. data/spec/page-object/elements/watir_element_spec.rb +145 -0
  258. data/spec/page-object/javascript_framework_facade_spec.rb +61 -0
  259. data/spec/page-object/loads_platform_spec.rb +53 -0
  260. data/spec/page-object/page-object_spec.rb +407 -0
  261. data/spec/page-object/page_factory_spec.rb +238 -0
  262. data/spec/page-object/page_populator_spec.rb +122 -0
  263. data/spec/page-object/page_section_spec.rb +73 -0
  264. data/spec/page-object/platforms/selenium_webdriver/selenium_page_object_spec.rb +68 -0
  265. data/spec/page-object/platforms/selenium_webdriver_spec.rb +29 -0
  266. data/spec/page-object/platforms/watir_webdriver/watir_page_object_spec.rb +29 -0
  267. data/spec/page-object/platforms/watir_webdriver_spec.rb +9 -0
  268. data/spec/page-object/selenium_accessors_spec.rb +609 -0
  269. data/spec/page-object/watir_accessors_spec.rb +1134 -0
  270. data/spec/page-object/widget_spec.rb +226 -0
  271. data/spec/spec_helper.rb +47 -0
  272. metadata +601 -0
@@ -0,0 +1 @@
1
+ frame 1
@@ -0,0 +1,11 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
2
+ <html>
3
+ <head>
4
+ <title></title>
5
+ </head>
6
+ <body>
7
+ <p>
8
+ <iframe id="three" src="nested_frame_3.html"></iframe>
9
+ </p>
10
+ </body>
11
+ </html>
@@ -0,0 +1,14 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
2
+ <html>
3
+ <head>
4
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
5
+ <title>
6
+ Title
7
+ </title>
8
+ </head>
9
+ <body>
10
+ <p>
11
+ <a id="four" href="success.html" target="_top">this link should open the page success page</a>
12
+ </p>
13
+ </body>
14
+ </html>
@@ -0,0 +1,10 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
2
+ <html>
3
+ <head>
4
+ <title></title>
5
+ </head>
6
+ <frameset cols="20%, 80%">
7
+ <frame id="one" src="nested_frame_1.html">
8
+ <frame id="two" src="nested_frame_2.html">
9
+ </frameset>
10
+ </html>
Binary file
@@ -0,0 +1,207 @@
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 id='tr_id' class='tr_class'>
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
+ <a href="success.html" target="_blank">New Window</a>
180
+ <a href="failure.html" target="_blank">Another New Window</a>
181
+
182
+ <input type="text" id="onfocus_text_field" onfocus="document.getElementById('onfocus_test').innerHTML = 'changed by onfocus event'"/>
183
+ <div id="onfocus_test"></div>
184
+
185
+ <div id="parent_div">
186
+ <a href="success.html" id="child">Success</a>
187
+ </div>
188
+
189
+ <article id='article_id'>HTML 5 Article</article>
190
+ <header id='header_id'>HTML 5 Header</header>
191
+ <footer id='footer_id'>HTML 5 Footer</footer>
192
+
193
+ <details id='details_id'>
194
+ <summary id='summary_id'>The summary</summary>
195
+ The details
196
+ </details>
197
+
198
+ <figure id='figure_id'>
199
+ <img src="images/img_pulpit.jpg" alt="The Pulpit Rock" width="304" height="228">
200
+ </figure>
201
+ This text have <b id="b_id" class="b_class" name="b_name">some text in bold</b>
202
+ <button id="button_button">This button is a button</button>
203
+ <input id="input_button" type="button" value="This button is a input" />
204
+ </body>
205
+ </html>
206
+
207
+
@@ -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,117 @@
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 by index in a table on the page
75
+ When I search for the elements for index "<index>"
76
+ And I select the table's indexed radio button
77
+ Then The table's indexed radio button should be selected
78
+
79
+ Scenarios:
80
+ | index |
81
+ | 0 |
82
+ | 1 |
83
+
84
+ Scenario Outline: Locating indexed text fields outside a table on the Page
85
+ When I search for the elements for index "<index>"
86
+ And I type "I found it" into the regular indexed text field by id
87
+ Then The regular indexed text field by id should contain "I found it"
88
+
89
+ Examples:
90
+ | index |
91
+ | foo |
92
+ | 123 |
93
+ | 12test |
94
+
95
+ Scenario: Element on first indexed property but not second
96
+ When I search for an element that is on an indexed property
97
+ And I search for the element on another indexed property it is not on
98
+ Then I should see that the element doesn't exist
99
+
100
+ Scenario: Index on first indexed property but not on second
101
+ When I search for an element by an index on an indexed property
102
+ And I search using the index which is not on another indexed property
103
+ Then I should see that the element doesn't exist for that index
104
+
105
+ Scenario: Index on first indexed property and different on second
106
+ When I search for an element with text by an index on an indexed property
107
+ And I search using an index which is on another indexed property
108
+ Then I should see the content of the element on the second indexed property
109
+
110
+ Scenario: Different indexes on stored indexed property
111
+ When I search for an element with text by an index on an indexed property
112
+ And I search for a different element with text by index on the indexed property
113
+ Then I should see the contents of both elements
114
+
115
+ Scenario: Can't redefine ruby methods
116
+ When I use a name that collides with a ruby method on an indexed property
117
+ Then the original method remains
@@ -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"