page_object 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
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,40 @@
1
+ Feature: File Field
2
+
3
+ Background:
4
+ Given I am on the static elements page
5
+
6
+ Scenario: Setting the value on the file field
7
+ When I set the file field to the step definition file
8
+ Then its' value should equal that file
9
+
10
+ Scenario Outline: Locating file fields on the Page
11
+ When I search for the file field by "<search_by>"
12
+ Then I should be able to set the file field
13
+
14
+ Examples:
15
+ | search_by |
16
+ | id |
17
+ | class |
18
+ | name |
19
+ | xpath |
20
+ | title |
21
+ | index |
22
+ | label |
23
+
24
+ @selenium_only
25
+ Scenario Outline: Locating file fields on the Page
26
+ When I search for the file field by "<search_by>"
27
+ Then I should be able to set the file field
28
+
29
+ Scenarios:
30
+ | search_by |
31
+ | css |
32
+
33
+ Scenario Outline: Locating file fields using multiple parameters
34
+ When I search for the file field by "<param1>" and "<param2>"
35
+ Then I should be able to set the file field
36
+
37
+ Examples:
38
+ | param1 | param2 |
39
+ | class | index |
40
+ | name | index |
@@ -0,0 +1,43 @@
1
+ Feature: Form
2
+
3
+ Background:
4
+ Given I am on the static elements page
5
+
6
+ Scenario: Submitting a form
7
+ When I locate the form by "id"
8
+ Then I should be able to submit the form
9
+
10
+ Scenario Outline: Locating a form on the page
11
+ When I locate the form by "<search_by>"
12
+ Then I should be able to submit the form
13
+
14
+ Scenarios:
15
+ | search_by |
16
+ | id |
17
+ | class |
18
+ | xpath |
19
+ | index |
20
+ | action |
21
+
22
+ @selenium_only
23
+ Scenario Outline: Locating a form on the page
24
+ When I locate the form by "<search_by>"
25
+ Then I should be able to submit the form
26
+
27
+ Scenarios:
28
+ | search_by |
29
+ | css |
30
+
31
+ Scenario Outline: Locating table using multiple parameters
32
+ When I locate the form using "<param1>" and "<param2>"
33
+ Then I should be able to submit the form
34
+
35
+ Scenarios:
36
+ | param1 | param2 |
37
+ | class | index |
38
+ | name | index |
39
+
40
+ Scenario: Finding a form dynamically
41
+ When I locate a form while the script is executing
42
+ Then I should see that the form exists
43
+ And I should be able to submit the form
@@ -0,0 +1,75 @@
1
+ Feature: Handling frames
2
+
3
+ Scenario: Accessing elements within the frame
4
+ Given I am on the frame elements page
5
+ When I type "page-object" into the text field for frame 2 using "id"
6
+ Then I should verify "page-object" is in the text field for frame 2 using "id"
7
+ When I type "page-object" into the text field for frame 2 using "name"
8
+ Then I should verify "page-object" is in the text field for frame 2 using "name"
9
+ When I type "page-object" into the text field for frame 2 using "index"
10
+ Then I should verify "page-object" is in the text field for frame 2 using "index"
11
+ #And I should be able to get the text fields text from frame 2 using "index"
12
+
13
+ @watir_only
14
+ Scenario: Accessing elements within the frame using Regexp
15
+ Given I am on the frame elements page
16
+ When I type "page-object" into the text field for frame 2 using "regex"
17
+ Then I should verify "page-object" is in the text field for frame 2 using "regex"
18
+
19
+ @watir_only
20
+ Scenario: Accessing elements within the frame using multiple identifiers
21
+ Given I am on the iframe elements page
22
+ When I type "page-object" into the text field for frame 2 using "multiple identifiers"
23
+ Then I should verify "page-object" is in the text field for frame 2 using "multiple identifiers"
24
+
25
+ Scenario: Switching between frames
26
+ Given I am on the frame elements page
27
+ When I type "page-object" into the text field for frame 2 using "id"
28
+ And I type "page-object" into the text field from frame 1 using "id"
29
+ Then I should verify "page-object" is in the text field for frame 2 using "id"
30
+ And I should verify "page-object" is in the text field for frame 1 using "id"
31
+
32
+ Scenario: Accessing elements within the frame
33
+ Given I am on the iframe elements page
34
+ When I type "page-object" into the text field for frame 2 using "id"
35
+ Then I should verify "page-object" is in the text field for frame 2 using "id"
36
+ When I type "page-object" into the text field for frame 2 using "name"
37
+ Then I should verify "page-object" is in the text field for frame 2 using "name"
38
+ When I type "page-object" into the text field for frame 2 using "index"
39
+ Then I should verify "page-object" is in the text field for frame 2 using "index"
40
+
41
+ Scenario: Switching between frames
42
+ Given I am on the iframe elements page
43
+ When I type "page-object" into the text field for frame 2 using "id"
44
+ And I type "page-object" into the text field from frame 1 using "id"
45
+ Then I should verify "page-object" is in the text field for frame 2 using "id"
46
+ And I should verify "page-object" is in the text field for frame 1 using "id"
47
+
48
+ Scenario: Nested frames
49
+ Given I am on the nested frame elements page
50
+ Then I should be able to click the link in the frame
51
+
52
+ Scenario: Identifying items in frames at runtime
53
+ Given I am on the frame elements page
54
+ When I type "page-object" into the text field from frame 1 identified dynamically
55
+ Then I should verify "page-object" in the text field for frame 1 identified dynamically
56
+
57
+ Scenario: Identifying items in iframes at runtime
58
+ Given I am on the iframe elements page
59
+ When I type "page-object" into the text field from iframe 1 identified dynamically
60
+ Then I should verify "page-object" in the text field for iframe 1 identified dynamically
61
+
62
+ Scenario: Handling alerts inside frames
63
+ Given I am on the frame elements page
64
+ When I trigger an alert within a frame
65
+ Then I should be able to get the alert's message
66
+
67
+ Scenario: Handling confirms inside frames
68
+ Given I am on the frame elements page
69
+ When I trigger a confirm within a frame
70
+ Then I should be able to get the confirm message
71
+
72
+ Scenario: Handling prompts inside frames
73
+ Given I am on the frame elements page
74
+ When I trigger a prompt within a frame
75
+ Then I should be able to get the message and default value
@@ -0,0 +1,29 @@
1
+ Feature: Generic Elements
2
+
3
+ Background:
4
+ Given I am on the static elements page
5
+
6
+ Scenario: Getting the text from the article element
7
+ When I get the text from the article
8
+ Then the text should be "HTML 5 Article"
9
+
10
+ Scenario: Getting the text from the header element
11
+ When I get the text from the header
12
+ Then the text should be "HTML 5 Header"
13
+
14
+ Scenario: Getting the text from the footer element
15
+ When I get the text from the footer
16
+ Then the text should be "HTML 5 Footer"
17
+
18
+ Scenario: Getting the text from the summary element
19
+ When I get the text from the summary
20
+ Then the text should be "The summary"
21
+
22
+ Scenario: Getting the text from the details element
23
+ When I get the text from the details
24
+ Then the text should be "The summary The details"
25
+
26
+ Scenario: getting properties from a svg element
27
+ When I get the svg element
28
+ Then the svg width should be "100"
29
+ And the svg height should be "100"
@@ -0,0 +1,24 @@
1
+ Feature: Gxt Table Extension
2
+ As a Quality Engineer working on a Gxt or Gwt project
3
+ In order to easily create test widgets to interact with application widgets
4
+ I need to define, register and use widgets as if they were normal elements
5
+
6
+ Background:
7
+ Given I have defined a GxtTable class extending Table
8
+ And I have registered the GxtTable with PageObject
9
+ And I define a page-object using that widget
10
+ And I am on the Gxt Examples page
11
+ And I have the Basic Grid opened
12
+
13
+ Scenario: Retrieve a GxtTable
14
+ When I retrieve a GxtTable widget
15
+ Then I should know it is visible
16
+
17
+ @watir_only
18
+ Scenario: Determine if a GxtTable exists
19
+ When I retrieve a GxtTable widget
20
+ Then I should know it exists
21
+
22
+ Scenario: Confirm a correct row count from a GxtTable
23
+ When I retrieve a GxtTable widget
24
+ Then the GxtTable should have "13" rows
@@ -0,0 +1,97 @@
1
+ Feature: Headings
2
+
3
+ Background:
4
+ Given I am on the static elements page
5
+
6
+ Scenario: Getting the text of headings
7
+ When I get the text for the "h1" element
8
+ Then I should see "h1's are cool"
9
+ When I get the text for the "h2" element
10
+ Then I should see "h2's are cool"
11
+ When I get the text for the "h3" element
12
+ Then I should see "h3's are cool"
13
+ When I get the text for the "h4" element
14
+ Then I should see "h4's are cool"
15
+ When I get the text for the "h5" element
16
+ Then I should see "h5's are cool"
17
+ When I get the text for the "h6" element
18
+ Then I should see "h6's are cool"
19
+
20
+ Scenario Outline: Locating h1s on the Page
21
+ When I search for the heading1 by "<search_by>"
22
+ Then I should see "h1's are cool"
23
+
24
+ Scenarios:
25
+ | search_by |
26
+ | id |
27
+ | class |
28
+ | name |
29
+ | xpath |
30
+ | index |
31
+ | css |
32
+
33
+ Scenario Outline: Locating h2s on the Page
34
+ When I search for the heading2 by "<search_by>"
35
+ Then I should see "h2's are cool"
36
+
37
+ Scenarios:
38
+ | search_by |
39
+ | id |
40
+ | class |
41
+ | name |
42
+ | xpath |
43
+ | index |
44
+ | css |
45
+
46
+ Scenario Outline: Locating h3s on the Page
47
+ When I search for the heading3 by "<search_by>"
48
+ Then I should see "h3's are cool"
49
+
50
+ Scenarios:
51
+ | search_by |
52
+ | id |
53
+ | class |
54
+ | name |
55
+ | xpath |
56
+ | index |
57
+ | css |
58
+
59
+ Scenario Outline: Locating h4s on the Page
60
+ When I search for the heading4 by "<search_by>"
61
+ Then I should see "h4's are cool"
62
+
63
+ Scenarios:
64
+ | search_by |
65
+ | id |
66
+ | class |
67
+ | name |
68
+ | xpath |
69
+ | index |
70
+ | css |
71
+
72
+ Scenario Outline: Locating h5s on the Page
73
+ When I search for the heading5 by "<search_by>"
74
+ Then I should see "h5's are cool"
75
+
76
+ Scenarios:
77
+ | search_by |
78
+ | id |
79
+ | class |
80
+ | name |
81
+ | xpath |
82
+ | index |
83
+ | css |
84
+
85
+ Scenario Outline: Locating h6s on the Page
86
+ When I search for the heading6 by "<search_by>"
87
+ Then I should see "h6's are cool"
88
+
89
+ Scenarios:
90
+ | search_by |
91
+ | id |
92
+ | class |
93
+ | name |
94
+ | xpath |
95
+ | index |
96
+ | css |
97
+
@@ -0,0 +1,45 @@
1
+ Feature: Hidden Fields
2
+
3
+ Background:
4
+ Given I am on the static elements page
5
+
6
+ Scenario: Setting and getting a value from a hidden field
7
+ When I retrieve the hidden field element
8
+ Then I should see the hidden field contains "12345"
9
+
10
+ Scenario Outline: Locating hidden fields on the Page
11
+ When I search for the hidden field by "<search_by>"
12
+ Then the hidden field element should contain "12345"
13
+
14
+ Scenarios:
15
+ | search_by |
16
+ | id |
17
+ | class |
18
+ | name |
19
+ | xpath |
20
+ | index |
21
+ | text |
22
+ | value |
23
+
24
+ @selenium_only
25
+ Scenario Outline: Locating hidden fields on the Page
26
+ When I search for the hidden field by "<search_by>"
27
+ Then the hidden field element should contain "12345"
28
+
29
+ Scenarios:
30
+ | search_by |
31
+ | css |
32
+
33
+ Scenario Outline: Locating a hidden field using multiple parameters
34
+ When I search for the hidden field by "<param1>" and "<param2>"
35
+ Then the hidden field element should contain "12345"
36
+
37
+ Scenarios:
38
+ | param1 | param2 |
39
+ | class | index |
40
+ | name | index |
41
+
42
+ Scenario: Finding a hidden field dynamically
43
+ When I find a hidden field while the script is executing
44
+ Then I should see that the hidden field exists
45
+ And the hidden field element should contain "12345"
@@ -0,0 +1,36 @@
1
+ <html>
2
+ <head>
3
+ <title>Async Page</title>
4
+ <script type="text/javascript">
5
+ function unhide() {
6
+ document.getElementById("target").style.display="block";
7
+ }
8
+
9
+ function hide() {
10
+ document.getElementById("target").style.display="none";
11
+ }
12
+
13
+ function addDiv() {
14
+ var button = document.createElement("input");
15
+ button.setAttribute("type", "button");
16
+ button.setAttribute("value", "New Button");
17
+ button.setAttribute("id", "new_button");
18
+ document.body.appendChild(button);
19
+ }
20
+
21
+ function removeDiv() {
22
+ var button = document.getElementById("new_button");
23
+ document.body.removeChild(button);
24
+ }
25
+ </script>
26
+ </head>
27
+ <body>
28
+ <input type="button" id="target" value="Target"/>
29
+ <input type="button" onclick="setTimeout(function() {hide();}, 2000);" value="Hide Button"/>
30
+ <input type="button" onclick="setTimeout(function() {unhide();}, 2000);" value="Unhide Button"/>
31
+ <input type="button" onclick="setTimeout(function() {addDiv();}, 2000);" value="Create Button"/>
32
+ <input type="button" onclick="setTimeout(function() {removeDiv();}, 2000);" value="Remove Button"/>
33
+ </body>
34
+ </html>
35
+
36
+
@@ -0,0 +1,13 @@
1
+ <html>
2
+ <body>
3
+ <button ondblclick="change_text()">Double Click</button>
4
+ <p id="change_on_double_click">The double click has not occurred.</p>
5
+ </body>
6
+
7
+ <script>
8
+ function change_text()
9
+ {
10
+ document.getElementById("change_on_double_click").innerHTML="Double Click Received"
11
+ }
12
+ </script>
13
+ </html>
@@ -0,0 +1,8 @@
1
+ <html>
2
+ <head>
3
+ <title>Failure</title>
4
+ </head>
5
+ <body>
6
+ <h1>Failure</h1>
7
+ </body>
8
+ </html>
@@ -0,0 +1,18 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3
+ <head>
4
+ <title>Frame 1</title>
5
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
+ </head>
7
+ <body onload="document.senderForm.senderElement.focus()">
8
+ <h1>Frame 1</h1>
9
+ <p>Nam accumsan. Donec nisi pede, interdum eget, ultrices ac, vulputate vitae, nunc. Nulla lorem. Duis cursus pharetra dolor. Nulla accumsan hendrerit leo. Vivamus commodo. Nullam dignissim adipiscing est. Aliquam vitae orci in risus lobortis luctus. Ut luctus fermentum ligula. Nullam ipsum. Suspendisse sit amet nisi.</p>
10
+ <form action="" method="post" name="senderForm">
11
+ <fieldset>
12
+ <input type="text" name="senderElement" id="senderElement" value="send_this_value" />
13
+ <input type="button" id="send" onclick="parent.frame2.document.recieverForm.recieverElement.value = document.senderForm.senderElement.value" value="Send!" />
14
+ </fieldset>
15
+ </form>
16
+ <div id="set_by_js" />
17
+ </body>
18
+ </html>