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,212 @@
1
+ class NestedElementsPage
2
+ include PageObject
3
+
4
+ div(:outer_div, :id => 'div_id')
5
+ link(:nested_link) { |page| page.outer_div_element.link_element }
6
+ button(:nested_button) { |page| page.outer_div_element.button_element }
7
+ text_field(:nested_text_field) { |page| page.outer_div_element.text_field_element }
8
+ hidden_field(:nested_hidden_field) { |page| page.outer_div_element.hidden_field_element }
9
+ text_area(:nested_text_area) { |page| page.outer_div_element.text_area_element }
10
+ select_list(:nested_select_list) { |page| page.outer_div_element.select_list_element }
11
+ checkbox(:nested_checkbox) { |page| page.outer_div_element.checkbox_element }
12
+ radio_button(:nested_radio_button) { |page| page.outer_div_element.radio_button_element }
13
+ div(:nested_div) { |page| page.outer_div_element.div_element }
14
+ span(:nested_span) { |page| page.outer_div_element.span_element }
15
+ table(:nested_table) { |page| page.outer_div_element.table_element }
16
+ cell(:nested_cell) { |page| page.nested_table_element.cell_element(:index => 1) }
17
+ image(:nested_image) { |page| page.outer_div_element.image_element }
18
+ form(:nested_form) { |page| page.outer_div_element.form_element }
19
+ ordered_list(:nested_ordered_list) { |page| page.outer_div_element.ordered_list_element }
20
+ unordered_list(:nested_unordered_list) { |page| page.outer_div_element.unordered_list_element }
21
+ list_item(:nested_list_item) { |page| page.nested_ordered_list_element.list_item_element }
22
+ h1(:nested_h1) { |page| page.outer_div_element.h1_element}
23
+ h2(:nested_h2) { |page| page.outer_div_element.h2_element }
24
+ h3(:nested_h3) { |page| page.outer_div_element.h3_element }
25
+ h4(:nested_h4) { |page| page.outer_div_element.h4_element }
26
+ h5(:nested_h5) { |page| page.outer_div_element.h5_element }
27
+ h6(:nested_h6) { |page| page.outer_div_element.h6_element }
28
+ paragraph(:nested_paragraph) { |page| page.outer_div_element.paragraph_element }
29
+ file_field(:nested_file_field) { |page| page.outer_div_element.file_field_element }
30
+
31
+ unordered_list(:outer_list, :id => 'outer')
32
+ ordered_list(:ordered_outer, :id => 'ol-outer')
33
+ end
34
+
35
+ Given /^I am on the nested elements page$/ do
36
+ @page = NestedElementsPage.new(@browser)
37
+ @page.navigate_to(UrlHelper.nested_elements)
38
+ end
39
+
40
+ When /^I search for a link located in a div$/ do
41
+ @link = @page.nested_link_element
42
+ end
43
+
44
+ Then /^I should be able to click the nested link$/ do
45
+ @link.click
46
+ end
47
+
48
+ When /^I search for a button located in a div$/ do
49
+ @button = @page.nested_button_element
50
+ end
51
+
52
+ Then /^I should be able to click the nested button$/ do
53
+ @button.click
54
+ end
55
+
56
+ When /^I search for a text field located in a div$/ do
57
+ @text_field = @page.nested_text_field_element
58
+ end
59
+
60
+ Then /^I should be able to type "([^\"]*)" in the nested text field$/ do |value|
61
+ @text_field.value = value
62
+ end
63
+
64
+ When /^I search for a hidden field located in a div$/ do
65
+ @hidden_field = @page.nested_hidden_field_element
66
+ end
67
+
68
+ Then /^I should be able to see that the nested hidden field contains "([^\"]*)"$/ do |value|
69
+ @hidden_field.value.should == value
70
+ end
71
+
72
+ When /^I search for a text area located in a div$/ do
73
+ @text_area = @page.nested_text_area_element
74
+ end
75
+
76
+ Then /^I should be able to type "([^\"]*)" in the nested text area$/ do |value|
77
+ @text_area.value = value
78
+ end
79
+
80
+ When /^I search for a select list located in a div$/ do
81
+ @select_list = @page.nested_select_list_element
82
+ end
83
+
84
+ Then /^I should be able to select "([^\"]*)" in the nested select list$/ do |value|
85
+ @select_list.select value
86
+ end
87
+
88
+ When /^I search for a checkbox located in a div$/ do
89
+ @checkbox = @page.nested_checkbox_element
90
+ end
91
+
92
+ Then /^I should be able to check the nested checkbox$/ do
93
+ @checkbox.check
94
+ end
95
+
96
+ When /^I search for a radio button located in a div$/ do
97
+ @radio = @page.nested_radio_button_element
98
+ end
99
+
100
+ Then /^I should be able to select the nested radio button$/ do
101
+ @radio.select
102
+ end
103
+
104
+ When /^I search for a div located in a div$/ do
105
+ @div = @page.nested_div_element
106
+ end
107
+
108
+ Then /^I should see the text "([^\"]*)" in the nested div$/ do |value|
109
+ @div.text.should == value
110
+ end
111
+
112
+ When /^I search for a span located in a div$/ do
113
+ @span = @page.nested_span_element
114
+ end
115
+
116
+ Then /^I should see the text "([^\"]*)" in the nested span$/ do |value|
117
+ @span.text.should == value
118
+ end
119
+
120
+ When /^I search for a table located in a div$/ do
121
+ @table = @page.nested_table_element
122
+ end
123
+
124
+ Then /^the data for row "([^\"]*)" of the nested table should be "([^\"]*)" and "([^\"]*)"$/ do |row, col1, col2|
125
+ table_row = @table[row.to_i - 1]
126
+ table_row[0].text.should == col1
127
+ table_row[1].text.should == col2
128
+ end
129
+
130
+ When /^I search the second table cell located in a table in a div$/ do
131
+ @cell = @page.nested_cell_element
132
+ end
133
+
134
+ Then /^the nested table cell should contain "([^\"]*)"$/ do |value|
135
+ @cell.text.should == value
136
+ end
137
+
138
+ When /^I search for an image located in a div$/ do
139
+ @image = @page.nested_image_element
140
+ end
141
+
142
+ Then /^the nested image should be "([^\"]*)" pixels wide$/ do |width|
143
+ @image.width.should == width.to_i
144
+ end
145
+
146
+ Then /^the nested image should be "([^\"]*)" pixels tall$/ do |height|
147
+ @image.height.should == height.to_i
148
+ end
149
+
150
+ When /^I search for a form located in a div$/ do
151
+ @form = @page.nested_form_element
152
+ end
153
+
154
+ Then /^I should be able to submit the nested form$/ do
155
+ @form.submit
156
+ end
157
+
158
+ When /^I search for an ordered list located in a div$/ do
159
+ @list = @page.nested_ordered_list_element
160
+ end
161
+
162
+ Then /^the first nested list items text should be "([^\"]*)"$/ do |value|
163
+ @list[0].text.should == value
164
+ end
165
+
166
+ When /^I search for an unordered list located in a div$/ do
167
+ @list = @page.nested_unordered_list_element
168
+ end
169
+
170
+ When /^I search for a list item nested in an ordered list in a div$/ do
171
+ @li = @page.nested_list_item_element
172
+ end
173
+
174
+ Then /^I should see the nested list items text should be "([^\"]*)"$/ do |value|
175
+ @li.text.should == value
176
+ end
177
+
178
+ When /^I search for a h(\d+) located in a div$/ do |num|
179
+ @header = @page.send "nested_h#{num}_element"
180
+ end
181
+
182
+ Then /^I should see the nested h(\d+)s text should be "([^\"]*)"$/ do |num, value|
183
+ @header.text.should == value
184
+ end
185
+
186
+ When /^I search for a paragraph located in a div$/ do
187
+ @para = @page.nested_paragraph_element
188
+ end
189
+
190
+ Then /^I should see the nested paragraphs text should be "([^\"]*)"$/ do |value|
191
+ @para.text.should == value
192
+ end
193
+
194
+ When /^I search for a file field located in a div$/ do
195
+ @ff = @page.nested_file_field_element
196
+ end
197
+
198
+ Then /^I should be able to set the nested file field$/ do
199
+ @ff.value = __FILE__
200
+ end
201
+
202
+ When /^I get the outter unordered list$/ do
203
+ @list = @page.outer_list_element
204
+ end
205
+
206
+ When /^I get the outter ordered list$/ do
207
+ @list = @page.ordered_outer_element
208
+ end
209
+
210
+ Then /^I should see "([^\"]*)" for list item (\d+)$/ do |text, item_number|
211
+ @list[item_number.to_i - 1].text.should == text
212
+ end
@@ -0,0 +1,23 @@
1
+ When /^I get the first item from the ordered list$/ do
2
+ @element = @page.ol_id_element[0]
3
+ end
4
+
5
+ When /^I search for the ordered list by "([^\"]*)"$/ do |how|
6
+ @list = @page.send "ol_#{how}_element"
7
+ end
8
+
9
+ When /^I search for the ordered list by "([^"]*)" and "([^"]*)"$/ do |param1, param2|
10
+ @list = @page.send "ol_#{param1}_#{param2}_element"
11
+ end
12
+
13
+ When /^I search for the ordered list while the script is executing$/ do
14
+ @list = @page.ordered_list_element(:id => 'ol_id')
15
+ end
16
+
17
+ Then /^I should see that the ordered list exists$/ do
18
+ @page.ol_id?.should == true
19
+ end
20
+
21
+ Then /^the text for the ordered list should contain "(.*)"$/ do |text|
22
+ @page.send("ol_id").should include text
23
+ end
@@ -0,0 +1,135 @@
1
+ Then /^the page should contain the text "([^\"]*)"$/ do |text|
2
+ @page.text.should include text
3
+ end
4
+
5
+ Then /^the page should contain the html "([^\"]*)"$/ do |html|
6
+ @page.html.should include html
7
+ end
8
+
9
+ Then /^the page should have the title "([^\"]*)"$/ do |title|
10
+ @page.title.should include title
11
+ end
12
+
13
+ Then /^I should be able to wait for a block to return true$/ do
14
+ @page.google_search_id
15
+ @page.wait_until(10, "too long to display page") do
16
+ @page.text.include? 'Success'
17
+ end
18
+ end
19
+
20
+ When /^I handle the alert$/ do
21
+ @msg = @page.alert do
22
+ @page.alert_button
23
+ end
24
+ end
25
+
26
+ When /^I handle the possible alert$/ do
27
+ @msg = @page.alert do
28
+ @page.alert_button_element.focus
29
+ end
30
+ end
31
+
32
+ When /^I handle the alert that reloads the page$/ do
33
+ @msg = @page.alert do
34
+ @page.alert_button_that_reloads
35
+ end
36
+ end
37
+
38
+ Then /^I should be able to get the alert\'s message$/ do
39
+ @msg.should == "I am an alert"
40
+ end
41
+
42
+ Then /^I should be able to verify the popup didn\'t have a message$/ do
43
+ @msg.should be_nil
44
+ end
45
+
46
+ When /^I handle the confirm$/ do
47
+ @msg = @page.confirm(true) do
48
+ @page.confirm_button
49
+ end
50
+ end
51
+
52
+ When /^I handle the possible confirm$/ do
53
+ @msg = @page.confirm(true) do
54
+ @page.confirm_button_element.focus
55
+ end
56
+ end
57
+
58
+ When /^I handle the confirm that reloads the page$/ do
59
+ @msg = @page.confirm(true) do
60
+ @page.confirm_button_that_reloads
61
+ end
62
+ end
63
+
64
+ Then /^I should be able to get the confirm message$/ do
65
+ @msg.should == 'set the value'
66
+ end
67
+
68
+ When /^I handle the prompt$/ do
69
+ @msg = @page.prompt("Cheezy") do
70
+ @page.prompt_button
71
+ end
72
+ end
73
+
74
+ When /^I handle the possible prompt$/ do
75
+ @msg = @page.prompt("Cheezy") do
76
+ @page.prompt_button_element.focus
77
+ end
78
+ end
79
+
80
+ Then /^I should be able to get the message and default value$/ do
81
+ @msg[:message].should == "enter your name"
82
+ @msg[:default_value].should == 'John Doe'
83
+ end
84
+
85
+ When /^I open a second window$/ do
86
+ @page.open_window
87
+ end
88
+
89
+ When /^I open a third window$/ do
90
+ @page.open_another_window
91
+ end
92
+
93
+ class SecondPage
94
+ include PageObject
95
+ end
96
+
97
+ Then /^I should be able to attach to a page object using title$/ do
98
+ @second_page = SecondPage.new(@browser)
99
+ @second_page.attach_to_window(:title => "Success")
100
+ @second_page.title.should == "Success"
101
+ end
102
+
103
+ Then /^I should be able to attach to a page object using url$/ do
104
+ @second_page = SecondPage.new(@browser)
105
+ @second_page.attach_to_window(:url => "success.html")
106
+ @second_page.current_url.should include 'success.html'
107
+ end
108
+
109
+ Then /^I should be able to refresh the page$/ do
110
+ @page.refresh
111
+ end
112
+
113
+ When /^I press the back button$/ do
114
+ @page.back
115
+ end
116
+
117
+ When /^I press the forward button$/ do
118
+ @page.forward
119
+ end
120
+
121
+ Then /^the page should have the expected title$/ do
122
+ @page.should have_expected_title
123
+ end
124
+
125
+ Then /^the page should have the expected element$/ do
126
+ @page.should have_expected_element
127
+ end
128
+
129
+ Then /^the page should not have the expected element$/ do
130
+ class FakePage
131
+ include PageObject
132
+ expected_element :blah
133
+ end
134
+ FakePage.new(@browser).should_not have_expected_element
135
+ end
@@ -0,0 +1,4 @@
1
+ Given /^I am on the static elements page$/ do
2
+ @page = Page.new(@browser)
3
+ @page.navigate_to(UrlHelper.static_elements)
4
+ end
@@ -0,0 +1,28 @@
1
+
2
+ When /^I get the text from the paragraph$/ do
3
+ @text = @page.p_id
4
+ end
5
+
6
+ When /^I search for the paragraph by "([^"]*)"$/ do |how|
7
+ @text = @page.send "p_#{how}".to_sym
8
+ end
9
+
10
+ When /^I search for the paragraph by "([^"]*)" and "([^"]*)"$/ do |param1, param2|
11
+ @text = @page.send "p_#{param1}_#{param2}"
12
+ end
13
+
14
+ When /^I get the text from a paragraph while the script is executing$/ do
15
+ @text = @page.paragraph_element(:id => 'p_id').text
16
+ end
17
+
18
+ Then /^I should see that the paragraph exists$/ do
19
+ @page.p_id?.should == true
20
+ end
21
+
22
+ Then(/^I should know the paragraph class is "(.*?)"$/) do |class_name|
23
+ @page.p_id_element.class_name.should == class_name
24
+ end
25
+
26
+ Then(/^I should be able to select "(.*?)" from the paragraph$/) do |text|
27
+ @page.p_id_element.select_text text
28
+ end
@@ -0,0 +1,36 @@
1
+ When /^no radio buttons have been selected$/ do
2
+ # nothing to do here
3
+ end
4
+
5
+ Then /^no radio buttons should be selected in the group$/ do
6
+ @page.favorite_cheese_selected?.should == false
7
+ end
8
+
9
+ When /^I select the "([^\"]*)" radio button in the group$/ do |how|
10
+ @page.select_favorite_cheese("#{how}")
11
+ end
12
+
13
+ Then /^the "([^\"]*)" radio button should be selected in the group$/ do |how|
14
+ @page.favorite_cheese_selected?.should == "#{how}"
15
+ end
16
+
17
+ Then /^the "([^\"]*)" radio button should not be selected$/ do |how|
18
+ @page.favorite_cheese_selected?.should_not == "#{how}"
19
+ end
20
+
21
+ Then /^I should see that the radio button group exists$/ do
22
+ @page.favorite_cheese?.should == true
23
+ end
24
+
25
+ When /^I ask for the elements of a radio button group$/ do
26
+ @elems = @page.favorite_cheese_elements
27
+ end
28
+
29
+ Then /^I should have an array with elements for each radio button$/ do
30
+ @elems.length.should == 3
31
+ end
32
+
33
+ And /^the radio button element values should be "([^\"]*)", "([^\"]*)", "([^\"]*)"$/ do |val1, val2, val3|
34
+ elem_arr = @elems.collect { |elem| elem.value }
35
+ elem_arr.should == [val1, val2, val3]
36
+ end
@@ -0,0 +1,27 @@
1
+ When /^I select the "([^\"]*)" radio button$/ do |how|
2
+ @page.send "select_#{how.downcase}_id".to_sym
3
+ end
4
+
5
+ Then /^the "([^\"]*)" radio button should be selected$/ do |how|
6
+ @page.send "#{how.downcase}_id_selected?".to_sym
7
+ end
8
+
9
+ When /^I search for the radio button by "([^\"]*)"$/ do |how|
10
+ @how = how
11
+ end
12
+
13
+ When /^I search for the radio button by "([^"]*)" and "([^"]*)"$/ do |param1, param2|
14
+ @how = "#{param1}_#{param2}"
15
+ end
16
+
17
+ When /^I select the radio button$/ do
18
+ @page.send "select_milk_#{@how}".to_sym
19
+ end
20
+
21
+ When /^I select the radio button while the script is executing$/ do
22
+ @page.radio_button_element(:id => 'milk_id').select
23
+ end
24
+
25
+ Then /^I should see that the radio button exists$/ do
26
+ @page.milk_id?.should == true
27
+ end
@@ -0,0 +1,65 @@
1
+ When /^I select "([^\"]*)" from the select list$/ do |text|
2
+ @page.sel_list_id = text
3
+ end
4
+
5
+ When /^I search for the select list by "([^\"]*)"$/ do |how|
6
+ @how = how
7
+ end
8
+
9
+ When /^I search for the select list by "([^"]*)" and "([^"]*)"$/ do |param1, param2|
10
+ @how = "#{param1}_#{param2}"
11
+ end
12
+
13
+ Then /^I should be able to select "([^\"]*)"$/ do |value|
14
+ @page.send "sel_list_#{@how}=".to_sym, value
15
+ end
16
+
17
+ Then /^the value for the selected item should be "([^\"]*)"$/ do |value|
18
+ result = @page.send "sel_list_#{@how}".to_sym
19
+ result.should == value
20
+ end
21
+
22
+ When /^I find a select list while the script is executing$/ do
23
+ @select_list = @page.select_list_element(:id => 'sel_list_id')
24
+ end
25
+
26
+ Then /^I should be able to select "([^\"]*)" from the list$/ do |value|
27
+ @select_list.select(value)
28
+ end
29
+
30
+ Then /^I should see that the select list exists$/ do
31
+ @page.sel_list_id?.should == true
32
+ end
33
+
34
+ Then /^the selected option should be "([^\"]*)"$/ do |text|
35
+ @page.select_list_element(:id => 'sel_list_id').selected_options[0].should == text
36
+ end
37
+
38
+ Then /^the select list should include "([^\"]*)"$/ do |text|
39
+ @page.sel_list_id_element.should include text
40
+ end
41
+
42
+ Then /^the select list should know that "([^\"]*)" is selected$/ do |text|
43
+ @page.sel_list_id_element.selected?(text).should be_true
44
+ end
45
+
46
+ Then /^the value for the option should be "([^\"]*)"$/ do |value|
47
+ element = @page.send "sel_list_#{@how}_element".to_sym
48
+ element.value.should == value
49
+ end
50
+
51
+ When /^I clear multiple select list$/ do
52
+ @page.sel_list_multiple_element.clear
53
+ end
54
+
55
+ Then /^multiple select list should have no selected options$/ do
56
+ @page.sel_list_multiple_element.selected_options.should be_empty
57
+ end
58
+
59
+ When /^I select an option using the value "([^\"]*)"$/ do |value|
60
+ @page.sel_list_id_element.select_value(value)
61
+ end
62
+
63
+ Then /^the selected option should have a value of "([^\"]*)"$/ do |value|
64
+ @page.sel_list_id_element.selected_values[0].should == value
65
+ end
@@ -0,0 +1,19 @@
1
+ When /^I get the text from the span$/ do
2
+ @text = @page.span_id
3
+ end
4
+
5
+ When /^I search for the span by "([^\"]*)"$/ do |how|
6
+ @text = @page.send "span_#{how}".to_sym
7
+ end
8
+
9
+ When /^I search for the span by "([^"]*)" and "([^"]*)"$/ do |param1, param2|
10
+ @text = @page.send "span_#{param1}_#{param2}".to_sym
11
+ end
12
+
13
+ When /^I get the text from a span while the script is executing$/ do
14
+ @text = @page.span_element(:id => 'span_id').text
15
+ end
16
+
17
+ Then /^I should see that the span exists$/ do
18
+ @page.span_id?.should == true
19
+ end
@@ -0,0 +1,15 @@
1
+ When /^I search for the table cell by "([^\"]*)"$/ do |how|
2
+ @cell_data = @page.send "cell_#{how}"
3
+ end
4
+
5
+ When /^I retrieve a table cell element by "([^"]*)" and "([^"]*)"$/ do |param1, param2|
6
+ @cell_data = @page.send "cell_#{param1}_#{param2}"
7
+ end
8
+
9
+ When /^I retrieve a table cell element while the script is executing$/ do
10
+ @cell_data = @page.cell_element(:id => 'cell_id').text
11
+ end
12
+
13
+ Then /^I should see that the cell exists$/ do
14
+ @page.cell_id?.should == true
15
+ end
@@ -0,0 +1,66 @@
1
+ Then /^the data for row "([^\"]*)" should be "([^\"]*)" and "([^\"]*)"$/ do |row, col1, col2|
2
+ row = (row.to_i - 1) if row.to_i > 0
3
+ table_row = @element[row]
4
+ table_row[0].text.should == col1
5
+ table_row[1].text.should == col2
6
+ end
7
+
8
+
9
+ When /^I retrieve the data from the table cell$/ do
10
+ @cell_data = @page.cell_id
11
+ end
12
+
13
+ Then /^the cell data should be '([^"]*)'$/ do |expected|
14
+ @cell_data.should == expected
15
+ end
16
+
17
+ When /^I retrieve a table element by "([^\"]*)"$/ do |how|
18
+ @element = @page.send "table_#{how}_element"
19
+ end
20
+
21
+ When /^I retrieve a table element by "([^\"]*)" and "([^\"]*)"$/ do |param1, param2|
22
+ @element = @page.send "table_#{param1}_#{param2}_element"
23
+ end
24
+
25
+ When /^I retrieve a table element while the script is executing$/ do
26
+ @element = @page.table_element(:id => 'table_id')
27
+ end
28
+
29
+ Then /^the data for the first row should be "([^\"]*)" and "([^\"]*)"$/ do |col1, col2|
30
+ @element.first_row[0].text.should == col1
31
+ @element.first_row[1].text.should == col2
32
+ end
33
+
34
+ Then /^the data for the second row should be "([^\"]*)" and "([^\"]*)"$/ do |col1, col2|
35
+ @element[1][0].text.should == col1
36
+ @element[1][1].text.should == col2
37
+ end
38
+
39
+ Then /^the data for the last row should be "([^\"]*)" and "([^\"]*)"$/ do |col1, col2|
40
+ @element.last_row[0].text.should == col1
41
+ @element.last_row[1].text.should == col2
42
+ end
43
+
44
+ Then /^I should see that the table exists$/ do
45
+ @page.table_id?.should == true
46
+ end
47
+
48
+ Then /^the data for column "([^\"]*)" and row "([^\"]*)" should be "([^\"]*)"$/ do |column, row, value|
49
+ @element[row.to_i - 1][column].text.should == value
50
+ end
51
+
52
+ Then /^the data for row "([^\"]*)" and column "([^\"]*)" should be "([^\"]*)"$/ do |row, column, value|
53
+ @element[row][column].text.should == value
54
+ end
55
+
56
+ Then /^the data for row "([^\"]*)" should be nil$/ do |row|
57
+ @element[row].should be_nil
58
+ end
59
+
60
+ Then /^the data for row "([^\"]*)" and column "([^\"]*)" should be nil$/ do |row, column|
61
+ @element[row][column].should be_nil
62
+ end
63
+
64
+ Then /^I should see the text includes "([^"]*)" when I retrieve it by "([^"]*)"$/ do |text, how|
65
+ @page.send("table_#{how}").should include text
66
+ end
@@ -0,0 +1,35 @@
1
+ When /^I type "([^\"]*)" into the text area$/ do |text|
2
+ @page.text_area_id = text
3
+ end
4
+
5
+ Then /^the text area should contain "([^\"]*)"$/ do |expected_text|
6
+ @page.text_area_id.should == expected_text
7
+ end
8
+
9
+ When /^I search for the text area by "([^\"]*)"$/ do |how|
10
+ @how = how
11
+ end
12
+
13
+ When /^I search for the text area by "([^"]*)" and "([^"]*)"$/ do |param1, param2|
14
+ @how = "#{param1}_#{param2}"
15
+ end
16
+
17
+ Then /^I should be able to type "([^\"]*)" into the area$/ do |value|
18
+ @page.send "text_area_#{@how}=".to_sym, value
19
+ end
20
+
21
+ When /^I find a text area while the script is executing$/ do
22
+ @text_area = @page.text_area_element(:id => 'text_area_id')
23
+ end
24
+
25
+ Then /^I should be able to type "([^"]*)" into the area element$/ do |value|
26
+ @text_area.value = value
27
+ end
28
+
29
+ When /^I clear the text area$/ do
30
+ @page.text_area_id_element.clear
31
+ end
32
+
33
+ Then /^I should see that the text area exists$/ do
34
+ @page.text_area_id?.should == true
35
+ end