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,53 @@
1
+ class JavascriptPage
2
+ include PageObject
3
+
4
+ text_field(:expression, :id => 'calculator-expression')
5
+ text_field(:results, :id => 'calculator-result')
6
+ button(:compute, :value => 'Compute')
7
+
8
+ end
9
+
10
+ def build_url(page)
11
+ target = ENV['BROWSER']
12
+ return "http://localhost:4567/#{page}" if target.nil? or target.include? 'local'
13
+ "http://ec2-107-22-131-88.compute-1.amazonaws.com:4567/#{page}"
14
+ end
15
+
16
+ Given /^I am on jQuery example page$/ do
17
+ PageObject.javascript_framework = :jquery
18
+ @page = JavascriptPage.new(@browser)
19
+ @page.navigate_to build_url("jquery.html")
20
+ end
21
+
22
+ Given /^I am on the Prototype example page$/ do
23
+ PageObject.javascript_framework = :prototype
24
+ @page = JavascriptPage.new(@browser)
25
+ @page.navigate_to build_url('prototype.html')
26
+ end
27
+
28
+ When /^I ask to compute "([^\"]*)"$/ do |expression|
29
+ @page.expression = expression
30
+ @page.compute
31
+ end
32
+
33
+ Then /^I should be able to wait for the answer "([^\"]*)"$/ do |answer|
34
+ @page.wait_for_ajax
35
+ @page.results.should == answer
36
+ end
37
+
38
+ Given /^I execute the javascript "([^\"]*)"$/ do |script|
39
+ @answer = @page.execute_script script
40
+ end
41
+
42
+ Given /^I execute the javascript "([^\"]*)" with an argument of "([^\"]*)"$/ do |script, arg|
43
+ @answer = @page.execute_script script, arg
44
+ end
45
+
46
+ Given /^I execute the javascript "([^\"]*)" with a text field argument$/ do |script|
47
+ text_field = @page.text_field_element(:id => 'text_field_id')
48
+ @page.execute_script(script, text_field)
49
+ end
50
+
51
+ Then /^I should get the answer "([^\"]*)"$/ do |answer|
52
+ @answer.should == answer.to_i
53
+ end
@@ -0,0 +1,19 @@
1
+ When /^I get the text from the label$/ do
2
+ @text = @page.label_id
3
+ end
4
+
5
+ When /^I search for the label by "([^\"]*)"$/ do |how|
6
+ @text = @page.send "label_#{how}".to_sym
7
+ end
8
+
9
+ When /^I search for the label by "(.*)" and "(.*)"$/ do |param1, param2|
10
+ @text = @page.send "label_#{param1}_#{param2}".to_sym
11
+ end
12
+
13
+ When /^I get the text from a label while the script is executing$/ do
14
+ @text = @page.label_element(:id => 'label_id').text
15
+ end
16
+
17
+ Then /^I should see that the label exists$/ do
18
+ @page.label_id?.should be true
19
+ end
@@ -0,0 +1,40 @@
1
+ When /^I select the link labeled "([^\"]*)"$/ do |text|
2
+ @page.google_search_id
3
+ end
4
+
5
+ When /^I search for the link by "([^\"]*)"$/ do |how|
6
+ @how = how
7
+ end
8
+
9
+ Then /^I should be able to select the link$/ do
10
+ @page.send "google_search_#{@how}".to_sym
11
+ end
12
+
13
+ When /^I select a link labeled "([^"]*)" and index "([^"]*)"$/ do |label, index|
14
+ @page.send "#{label.downcase}#{index}".to_sym
15
+ end
16
+
17
+ When /^I select a link while the script is executing$/ do
18
+ link = @page.link_element(:id => 'link_id')
19
+ link.click
20
+ end
21
+
22
+ Then(/^I should see that the link exists$/) do
23
+ @page.link_id?.should == true
24
+ end
25
+
26
+ When(/^I get the href for the link$/) do
27
+ @href = @page.google_search_id_element.href
28
+ end
29
+
30
+ Then(/^I should know it was "(.*?)"$/) do |href|
31
+ @href.should include href
32
+ end
33
+
34
+ When(/^I get the link using the href success$/) do
35
+ @link = @page.link_element(:href => /succ.*html/)
36
+ end
37
+
38
+ Then(/^I should be able to click the link$/) do
39
+ @link.click
40
+ end
@@ -0,0 +1,19 @@
1
+ When /^I get the text from the list item$/ do
2
+ @text = @page.li_id
3
+ end
4
+
5
+ When /^I search for the list item by "([^\"]*)"$/ do |how|
6
+ @text = @page.send "li_#{how}"
7
+ end
8
+
9
+ When /^I search for the list item by "([^"]*)" and "([^"]*)"$/ do |param1, param2|
10
+ @text = @page.send "li_#{param1}_#{param2}"
11
+ end
12
+
13
+ When /^I search for the list item while the script is executing$/ do
14
+ @text = @page.list_item_element(:id => 'li_id').text
15
+ end
16
+
17
+ Then /^I should see that the list item exists$/ do
18
+ @page.li_id?.should == true
19
+ end
@@ -0,0 +1,62 @@
1
+ class ModalPage
2
+ include PageObject
3
+
4
+ button(:launch_modal, :id => 'launch_modal_button')
5
+ end
6
+
7
+ class ModalDialog
8
+ include PageObject
9
+
10
+ button(:close_window, :id => 'close_window')
11
+ button(:close_window_with_delay, :id => 'delayed_close')
12
+ button(:launch_another_modal, :id => 'launch_modal_button')
13
+ end
14
+
15
+ class AnotherModalDialog
16
+ include PageObject
17
+
18
+ button(:close_window, :id => 'close_window2')
19
+ button(:close_window_with_delay, :id => 'delayed_close2')
20
+ end
21
+
22
+
23
+ Given /^I am on the modal page$/ do
24
+ ModalPage.new(@browser).navigate_to(UrlHelper.modal)
25
+ end
26
+
27
+ When /^I open a modal dialog$/ do
28
+ page = ModalPage.new(@browser)
29
+ page.modal_dialog do
30
+ page.launch_modal
31
+ end
32
+ end
33
+
34
+ Then /^I should be able to close the modal$/ do
35
+ dialog = ModalDialog.new(@browser)
36
+ dialog.attach_to_window(:title => 'Modal 1') do
37
+ dialog.close_window
38
+ end
39
+ end
40
+
41
+ When /^I open another modal dialog from that one$/ do
42
+ dialog = ModalDialog.new(@browser)
43
+ dialog.attach_to_window(:title => 'Modal 1') #do
44
+ dialog.modal_dialog #do
45
+ # dialog.launch_another_modal
46
+ # end
47
+ dialog.launch_another_modal
48
+ # end
49
+ end
50
+
51
+ Then /^I should be able to close both modals$/ do
52
+ pending
53
+ # another = AnotherModalDialog.new(@browser)
54
+ # another.attach_to_window(:title => 'Modal 2') do
55
+ # another.close_window
56
+ # end
57
+
58
+ # dialog = ModalDialog.new(@browser)
59
+ # dialog.attach_to_window(:title => 'Modal 1') do
60
+ # dialog.close_window
61
+ # end
62
+ end
@@ -0,0 +1,541 @@
1
+ class MultiElementsPage
2
+ include PageObject
3
+
4
+ divs(:the_divs, :class => 'div')
5
+ divs(:block_divs) do |page|
6
+ page.div_elements(:class => 'div')
7
+ end
8
+ buttons(:the_buttons, :class => 'button')
9
+ text_fields(:the_text_fields, :class => 'textfield')
10
+ hidden_fields(:the_hidden_fields, :class => 'hiddenfield')
11
+ text_areas(:the_text_areas, :class => 'textarea')
12
+ select_lists(:the_select_lists, :class => 'selectlist')
13
+ links(:the_links, :class => 'link')
14
+ checkboxes(:the_checkboxes, :class => 'checkbox')
15
+ radio_buttons(:the_radio_buttons, :class => 'radio')
16
+ spans(:the_spans, :class => 'span')
17
+ tables(:the_tables, :class => 'table')
18
+ cells(:the_cells, :class => 'td')
19
+ images(:the_images, :class => 'image')
20
+ forms(:the_forms, :class => 'form')
21
+ list_items(:the_list_items, :class => 'li')
22
+ unordered_lists(:the_unordered_lists, :class => 'ul')
23
+ ordered_lists(:the_ordered_lists, :class => 'ol')
24
+ h1s(:the_h1s, :class => 'h1')
25
+ h2s(:the_h2s, :class => 'h2')
26
+ h3s(:the_h3s, :class => 'h3')
27
+ h4s(:the_h4s, :class => 'h4')
28
+ h5s(:the_h5s, :class => 'h5')
29
+ h6s(:the_h6s, :class => 'h6')
30
+ paragraphs(:the_paragraphs, :class => 'p')
31
+ labels(:the_labels, :class => 'label')
32
+ file_fields(:the_file_fields, :class => 'file_field_class')
33
+ elements(:generic_label, :label, :class => 'label')
34
+ b(:bs)
35
+ end
36
+
37
+
38
+ Given /^I am on the multi elements page$/ do
39
+ @page = MultiElementsPage.new(@browser)
40
+ @page.navigate_to(UrlHelper.multi)
41
+ end
42
+
43
+ When /^I select the buttons with class "([^\"]*)"$/ do |class_name|
44
+ @elements = @page.button_elements(:class => class_name)
45
+ end
46
+
47
+ Then /^I should have (\d+) buttons$/ do |num_buttons|
48
+ @elements.size.should == num_buttons.to_i
49
+ end
50
+
51
+ Then /^the value of button (\d+) should be "([^\"]*)"$/ do |button_num, value|
52
+ @elements[button_num.to_i - 1].value.should == value
53
+ end
54
+
55
+ When /^I select the text fields with class "([^\"]*)"$/ do |class_name|
56
+ @elements = @page.text_field_elements(:class => class_name)
57
+ end
58
+
59
+ Then /^I should have (\d+) text fields$/ do |num_text_fields|
60
+ @elements.size.should == num_text_fields.to_i
61
+ end
62
+
63
+ Then /^the value of text field (\d+) should be "([^\"]*)"$/ do |text_field_num, value|
64
+ @elements[text_field_num.to_i - 1].value.should == value
65
+ end
66
+
67
+ When /^I select the hidden fields with class "([^\"]*)"$/ do |class_name|
68
+ @elements = @page.hidden_field_elements(:class => class_name)
69
+ end
70
+
71
+ Then /^I should have (\d+) hidden fields$/ do |num_hidden_fields|
72
+ @elements.size.should == num_hidden_fields.to_i
73
+ end
74
+
75
+ Then /^the value of hidden field (\d+) should be "([^\"]*)"$/ do |hidden_field_num, value|
76
+ @elements[hidden_field_num.to_i - 1].value.should == value
77
+ end
78
+
79
+ When /^I select the text areas with class "([^\"]*)"$/ do |class_name|
80
+ @elements = @page.text_area_elements(:class => class_name)
81
+ end
82
+
83
+ Then /^I should have (\d+) text areas$/ do |num_text_areas|
84
+ @elements.size.should == num_text_areas.to_i
85
+ end
86
+
87
+ Then /^the value of text area (\d+) should be "([^\"]*)"$/ do |text_area_num, value|
88
+ @elements[text_area_num.to_i - 1].value.should == value
89
+ end
90
+
91
+ When /^I select the select lists with class "([^\"]*)"$/ do |class_name|
92
+ @elements = @page.select_list_elements(:class => class_name)
93
+ end
94
+
95
+ Then /^I should have (\d+) select lists$/ do |num_select_lists|
96
+ @elements.size.should == num_select_lists.to_i
97
+ end
98
+
99
+ Then /^the value of select list (\d+) should be "([^\"]*)"$/ do |select_list_num, value|
100
+ @elements[select_list_num.to_i - 1].value.should == value
101
+ end
102
+
103
+ When /^I select the link with class "([^\"]*)"$/ do |link_class|
104
+ @elements = @page.link_elements(:class => link_class)
105
+ end
106
+
107
+ Then /^I should have (\d+) links$/ do |num_links|
108
+ @elements.size.should == num_links.to_i
109
+ end
110
+
111
+ Then /^the text of link (\d+) should be "([^\"]*)"$/ do |link_num, text|
112
+ @elements[link_num.to_i - 1].text.should == text
113
+ end
114
+
115
+ When /^I select the check boxes with class "([^\"]*)"$/ do |class_name|
116
+ @elements = @page.checkbox_elements(:class => class_name)
117
+ end
118
+
119
+ Then /^I should have (\d+) checkboxes$/ do |num_checkboxes|
120
+ @elements.size.should == num_checkboxes.to_i
121
+ end
122
+
123
+ Then /^the value of checkbox (\d+) should be "([^\"]*)"$/ do |checkbox_num, value|
124
+ @elements[checkbox_num.to_i - 1].value.should == value
125
+ end
126
+
127
+ When /^I select the radio button with class "([^\"]*)"$/ do |class_name|
128
+ @elements = @page.radio_button_elements(:class => class_name)
129
+ end
130
+
131
+ Then /^I should have (\d+) radio buttons$/ do |num_radio_buttons|
132
+ @elements.size.should == num_radio_buttons.to_i
133
+ end
134
+
135
+ Then /^the value of radio button (\d+) should be "([^\"]*)"$/ do |radio_button_num, value|
136
+ @elements[radio_button_num.to_i - 1].value.should == value
137
+ end
138
+
139
+ When /^I select the div with class "([^\"]*)"$/ do |class_name|
140
+ @elements = @page.div_elements(:class => class_name)
141
+ end
142
+
143
+ Then /^I should have (\d+) divs$/ do |num_divs|
144
+ @elements.size.should == num_divs.to_i
145
+ end
146
+
147
+ Then /^the text of div (\d+) should be "([^\"]*)"$/ do |div_num, text|
148
+ @elements[div_num.to_i - 1].text.should == text
149
+ end
150
+
151
+ When /^I select the spans with class "([^\"]*)"$/ do |class_name|
152
+ @elements = @page.span_elements(:class => class_name)
153
+ end
154
+
155
+ Then /^I should have (\d+) spans$/ do |num_spans|
156
+ @elements.size.should == num_spans.to_i
157
+ end
158
+
159
+ Then /^the text of span (\d+) should be "([^\"]*)"$/ do |span_num, text|
160
+ @elements[span_num.to_i - 1].text.should == text
161
+ end
162
+
163
+ When /^I select the tables with class "([^\"]*)"$/ do |class_name|
164
+ @elements = @page.table_elements(:class => class_name)
165
+ end
166
+
167
+ Then /^I should have (\d+) tables$/ do |num_tables|
168
+ @elements.size.should == num_tables.to_i
169
+ end
170
+
171
+ Then /^the first row first column for table (\d+) should have "([^\"]*)"$/ do |table_num, text|
172
+ @elements[table_num.to_i - 1][0][0].text.should == text
173
+ end
174
+
175
+ When /^I select the cells with class "([^\"]*)"$/ do |cell_class|
176
+ @elements = @page.cell_elements(:class => cell_class)
177
+ end
178
+
179
+ Then /^I should have (\d+) cells$/ do |num_cells|
180
+ @elements.size.should == num_cells.to_i
181
+ end
182
+
183
+ Then /^the text for cell (\d+) should be "([^\"]*)"$/ do |cell_num, text|
184
+ @elements[cell_num.to_i - 1].text.should == text
185
+ end
186
+
187
+ When /^I select the images with class "([^\"]*)"$/ do |class_name|
188
+ @elements = @page.image_elements(:class => class_name)
189
+ end
190
+
191
+ Then /^I should have (\d+) images$/ do |num_images|
192
+ @elements.size.should == num_images.to_i
193
+ end
194
+
195
+ Then /^the alt for image (\d+) should be "([^\"]*)"$/ do |image_num, alt|
196
+ @elements[image_num.to_i - 1].attribute(:alt).should == alt
197
+ end
198
+
199
+ When /^I select the forms with class "([^\"]*)"$/ do |class_name|
200
+ @elements = @page.form_elements(:class => class_name)
201
+ end
202
+
203
+ Then /^I should have (\d+) forms$/ do |number|
204
+ @elements.size.should == number.to_i
205
+ end
206
+
207
+ Then /^the action for form (\d+) should be "([^\"]*)"$/ do |form_number, action|
208
+ @elements[form_number.to_i-1].attribute(:action).should match action
209
+ end
210
+
211
+ When /^I select the list items with class "([^\"]*)"$/ do |class_name|
212
+ @elements = @page.list_item_elements(:class => class_name)
213
+ end
214
+
215
+ Then /^I should have (\d+) list items$/ do |num_list_items|
216
+ @elements.size.should == num_list_items.to_i
217
+ end
218
+
219
+ Then /^the text for list item (\d+) should be "([^\"]*)"$/ do |list_item_num, text|
220
+ @elements[list_item_num.to_i - 1].text.should == text
221
+ end
222
+
223
+ When /^I select the unordered list with class "([^\"]*)"$/ do |class_name|
224
+ @elements = @page.unordered_list_elements(:class => class_name)
225
+ end
226
+
227
+ Then /^I should have (\d+) unordered lists$/ do |num_unordered_lists|
228
+ @elements.size.should == num_unordered_lists.to_i
229
+ end
230
+
231
+ Then /^the text for the first item in unordered list (\d+) should be "([^\"]*)"$/ do |ul_num, text|
232
+ @elements[ul_num.to_i - 1][0].text.should == text
233
+ end
234
+
235
+ When /^I select the ordered lists with class "([^\"]*)"$/ do |class_name|
236
+ @elements = @page.ordered_list_elements(:class => class_name)
237
+ end
238
+
239
+ Then /^I should have (\d+) ordered lists$/ do |num_ol|
240
+ @elements.size.should == num_ol.to_i
241
+ end
242
+
243
+ Then /^the text for the first item in ordered list (\d+) should be "([^\"]*)"$/ do |ol_num, text|
244
+ @elements[ol_num.to_i - 1][0].text.should == text
245
+ end
246
+
247
+ When /^I select the h1s with class "([^\"]*)"$/ do |class_name|
248
+ @elements = @page.h1_elements(:class => class_name)
249
+ end
250
+
251
+ Then /^I should have (\d+) h1s$/ do |num_h1s|
252
+ @elements.size.should == num_h1s.to_i
253
+ end
254
+
255
+ Then /^the text for h1 (\d+) should be "([^\"]*)"$/ do |h1_num, text|
256
+ @elements[h1_num.to_i - 1].text.should == text
257
+ end
258
+
259
+ When /^I select the h2s with the class "([^\"]*)"$/ do |class_name|
260
+ @elements = @page.h2_elements(:class => class_name)
261
+ end
262
+
263
+ Then /^I should have (\d+) h2s$/ do |num_h2s|
264
+ @elements.size.should == num_h2s.to_i
265
+ end
266
+
267
+ Then /^the text for h2 (\d+) should be "([^\"]*)"$/ do |h2_num, text|
268
+ @elements[h2_num.to_i - 1].text.should == text
269
+ end
270
+
271
+ When /^I select the h3s with the class "([^\"]*)"$/ do |class_name|
272
+ @elements = @page.h3_elements(:class => class_name)
273
+ end
274
+
275
+ Then /^I should have (\d+) h3s$/ do |num_h3s|
276
+ @elements.size.should == num_h3s.to_i
277
+ end
278
+
279
+ Then /^the text for h3 (\d+) should be "([^\"]*)"$/ do |h3_num, text|
280
+ @elements[h3_num.to_i - 1].text.should == text
281
+ end
282
+
283
+ When /^I select the h4s with the class "([^\"]*)"$/ do |class_name|
284
+ @elements = @page.h4_elements(:class => class_name)
285
+ end
286
+
287
+ Then /^I should have (\d+) h4s$/ do |num_h4s|
288
+ @elements.size.should == num_h4s.to_i
289
+ end
290
+
291
+ Then /^the text for H4 (\d+) should be "([^\"]*)"$/ do |h4_num, text|
292
+ @elements[h4_num.to_i - 1].text.should == text
293
+ end
294
+
295
+ When /^I select the h5s with the class "([^\"]*)"$/ do |class_name|
296
+ @elements = @page.h5_elements(:class => class_name)
297
+ end
298
+
299
+ Then /^I should have (\d+) h5s$/ do |num_h5s|
300
+ @elements.size.should == num_h5s.to_i
301
+ end
302
+
303
+ Then /^the text for H5 (\d+) should be "([^\"]*)"$/ do |h5_num, text|
304
+ @elements[h5_num.to_i - 1].text.should == text
305
+ end
306
+
307
+ When /^I select the h6s with the class "([^\"]*)"$/ do |class_name|
308
+ @elements = @page.h6_elements(:class => class_name)
309
+ end
310
+
311
+ Then /^I should have (\d+) h6s$/ do |num_h6s|
312
+ @elements.size.should == num_h6s.to_i
313
+ end
314
+
315
+ Then /^the text for H6 (\d+) should be "([^\"]*)"$/ do |h6_num, text|
316
+ @elements[h6_num.to_i - 1].text.should == text
317
+ end
318
+
319
+ When /^I select the paragraph with class "([^\"]*)"$/ do |class_name|
320
+ @elements = @page.paragraph_elements(:class => class_name)
321
+ end
322
+
323
+ Then /^I should have (\d+) paragraphs$/ do |num_paragraphs|
324
+ @elements.size.should == num_paragraphs.to_i
325
+ end
326
+
327
+ Then /^the text for paragraph (\d+) should be "([^\"]*)"$/ do |para_num, text|
328
+ @elements[para_num.to_i - 1].text.should == text
329
+ end
330
+
331
+ When /^I select all buttons using no identifier$/ do
332
+ @elements = @page.button_elements
333
+ end
334
+
335
+ When /^I select all text fields using no identifier$/ do
336
+ @elements = @page.text_field_elements
337
+ end
338
+
339
+ When /^I select all hidden fields using no identifier$/ do
340
+ @elements = @page.hidden_field_elements
341
+ end
342
+
343
+ When /^I select text areas using no identifier$/ do
344
+ @elements = @page.text_area_elements
345
+ end
346
+
347
+ When /^I select select lists using no identifier$/ do
348
+ @elements = @page.select_list_elements
349
+ end
350
+
351
+ When /^I select links using no identifier$/ do
352
+ @elements = @page.link_elements
353
+ end
354
+
355
+ When /^I select checboxes using no identifier$/ do
356
+ @elements = @page.checkbox_elements
357
+ end
358
+
359
+ When /^I select radio buttons using no identifier$/ do
360
+ @elements = @page.radio_button_elements
361
+ end
362
+
363
+ When /^I select divs using no identifier$/ do
364
+ @elements = @page.div_elements
365
+ end
366
+
367
+ When /^I select spans using no identifier$/ do
368
+ @elements = @page.span_elements
369
+ end
370
+
371
+ When /^I select tables using no identifier$/ do
372
+ @elements = @page.table_elements
373
+ end
374
+
375
+ When /^I select the cells using no identifier$/ do
376
+ @elements = @page.cell_elements
377
+ end
378
+
379
+ When /^I select the images using no identifier$/ do
380
+ @elements = @page.image_elements
381
+ end
382
+
383
+ When /^I select the forms using no identifier$/ do
384
+ @elements = @page.form_elements
385
+ end
386
+
387
+ When /^I select the list items using no identifier$/ do
388
+ @elements = @page.list_item_elements
389
+ end
390
+
391
+ When /^I select the unordered list using no parameter$/ do
392
+ @elements = @page.unordered_list_elements
393
+ end
394
+
395
+ When /^I select the ordered lists using no identifier$/ do
396
+ @elements = @page.ordered_list_elements
397
+ end
398
+
399
+ When /^I select h(\d+)s using no identifier$/ do |num|
400
+ @elements = @page.send "h#{num}_elements"
401
+ end
402
+
403
+ When /^I select paragraphs using no identifier$/ do
404
+ @elements = @page.paragraph_elements
405
+ end
406
+
407
+ When /^I select the labels with class "([^\"]*)"$/ do |class_name|
408
+ @elements = @page.label_elements(:class => class_name)
409
+ end
410
+
411
+ Then /^I should have (\d+) labels$/ do |num_labels|
412
+ @elements.size.should == num_labels.to_i
413
+ end
414
+
415
+ Then /^the text for label (\d+) should be "([^\"]*)"$/ do |label_num, text|
416
+ @elements[label_num.to_i - 1].text.should == text
417
+ end
418
+
419
+ When /^I select labels using no identifier$/ do
420
+ @elements = @page.label_elements
421
+ end
422
+
423
+ When /^I select the file fields with class "([^\"]*)"$/ do |class_name|
424
+ @elements = @page.file_field_elements(:class => class_name)
425
+ end
426
+
427
+ Then /^I should have (\d+) file fields$/ do |num_file_fields|
428
+ @elements.size.should == num_file_fields.to_i
429
+ end
430
+
431
+ Then /^the title for file field (\d+) should be "([^\"]*)"$/ do |file_field_num, title|
432
+ @elements[file_field_num.to_i - 1].attribute('title').should == title
433
+ end
434
+
435
+ When /^I select the file fields using no identifier$/ do
436
+ @elements = @page.file_field_elements
437
+ end
438
+
439
+ When /^I select the divs using the generated method$/ do
440
+ @elements = @page.the_divs_elements
441
+ end
442
+
443
+ When /^I select the buttons using the generated method$/ do
444
+ @elements = @page.the_buttons_elements
445
+ end
446
+
447
+ When /^I select the text fields using the generated method$/ do
448
+ @elements = @page.the_text_fields_elements
449
+ end
450
+
451
+ When /^I select the hidden fields using the generated method$/ do
452
+ @elements = @page.the_hidden_fields_elements
453
+ end
454
+
455
+ When /^I select the text areas using the generated method$/ do
456
+ @elements = @page.the_text_areas_elements
457
+ end
458
+
459
+ When /^I select the select lists using the generated method$/ do
460
+ @elements = @page.the_select_lists_elements
461
+ end
462
+
463
+ When /^I select the link using the generated method$/ do
464
+ @elements = @page.the_links_elements
465
+ end
466
+
467
+ When /^I select the check boxes using the generated method$/ do
468
+ @elements = @page.the_checkboxes_elements
469
+ end
470
+
471
+ When /^I select the radio button using the generated method$/ do
472
+ @elements = @page.the_radio_buttons_elements
473
+ end
474
+
475
+ When /^I select the spans using the generated method$/ do
476
+ @elements = @page.the_spans_elements
477
+ end
478
+
479
+ When /^I select the tables using the generated method$/ do
480
+ @elements = @page.the_tables_elements
481
+ end
482
+
483
+ When /^I select the cells using the generated method$/ do
484
+ @elements = @page.the_cells_elements
485
+ end
486
+
487
+ When /^I select the images using the generated method$/ do
488
+ @elements = @page.the_images_elements
489
+ end
490
+
491
+ When /^I select the forms using the generated method$/ do
492
+ @elements = @page.the_forms_elements
493
+ end
494
+
495
+ When /^I select the list items using the generated method$/ do
496
+ @elements = @page.the_list_items_elements
497
+ end
498
+
499
+ When /^I select the unordered list using the generated method$/ do
500
+ @elements = @page.the_unordered_lists_elements
501
+ end
502
+
503
+ When /^I select the ordered lists using the generated method$/ do
504
+ @elements = @page.the_ordered_lists_elements
505
+ end
506
+
507
+ When /^I select the h(\d+)s using the generated method$/ do |num|
508
+ @elements = @page.send "the_h#{num.to_i}s_elements"
509
+ end
510
+
511
+ When /^I select the paragraph using the generated method$/ do
512
+ @elements = @page.the_paragraphs_elements
513
+ end
514
+
515
+ When /^I select the labels using the generated method$/ do
516
+ @elements = @page.the_labels_elements
517
+ end
518
+
519
+ When /^I select the file fields using the generated method$/ do
520
+ @elements = @page.the_file_fields_elements
521
+ end
522
+
523
+ When /^I select the divs using a block$/ do
524
+ @elements = @page.block_divs_elements
525
+ end
526
+
527
+ When(/^I select the multiple elements with a tag label$/) do
528
+ @elements = @page.generic_label_elements
529
+ end
530
+
531
+ When /^I select the bs$/ do
532
+ @elements = @page.b_elements
533
+ end
534
+
535
+ Then /^I should have (\d+) bs$/ do |num_bs|
536
+ @elements.size.should == num_bs.to_i
537
+ end
538
+
539
+ Then /^the text for b (\d+) should be "([^\"]*)"$/ do |b_num, text|
540
+ @elements[b_num.to_i - 1].text.should == text
541
+ end