druid-s 1.0.0

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 (219) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +7 -0
  3. data/.rspec +1 -0
  4. data/.rvmrc +1 -0
  5. data/.travis.yml +27 -0
  6. data/ChangeLog +541 -0
  7. data/Gemfile +8 -0
  8. data/README.md +78 -0
  9. data/Rakefile +33 -0
  10. data/cucumber.yml +6 -0
  11. data/druid.gemspec +30 -0
  12. data/features/area.feature +33 -0
  13. data/features/async.feature +16 -0
  14. data/features/audio.feature +61 -0
  15. data/features/bold.feature +20 -0
  16. data/features/button.feature +81 -0
  17. data/features/canvas.feature +34 -0
  18. data/features/checkbox.feature +48 -0
  19. data/features/div.feature +45 -0
  20. data/features/element.feature +281 -0
  21. data/features/file_field.feature +38 -0
  22. data/features/form.feature +37 -0
  23. data/features/frames.feature +76 -0
  24. data/features/generic_elements.feature +29 -0
  25. data/features/heading.feature +160 -0
  26. data/features/hidden_field.feature +39 -0
  27. data/features/html/async.html +31 -0
  28. data/features/html/frame_1.html +18 -0
  29. data/features/html/frame_2.html +16 -0
  30. data/features/html/frame_3.html +14 -0
  31. data/features/html/frames.html +12 -0
  32. data/features/html/hover.html +11 -0
  33. data/features/html/iframes.html +12 -0
  34. data/features/html/images/circle.png +0 -0
  35. data/features/html/images/img_pulpit.jpg +0 -0
  36. data/features/html/modal.html +17 -0
  37. data/features/html/modal_1.html +38 -0
  38. data/features/html/modal_2.html +27 -0
  39. data/features/html/multi_elements.html +145 -0
  40. data/features/html/nested_elements.html +75 -0
  41. data/features/html/nested_frame_1.html +1 -0
  42. data/features/html/nested_frame_2.html +11 -0
  43. data/features/html/nested_frame_3.html +14 -0
  44. data/features/html/nested_frames.html +10 -0
  45. data/features/html/planets.gif +0 -0
  46. data/features/html/static_elements.html +203 -0
  47. data/features/html/success.html +8 -0
  48. data/features/html/sun.gif +0 -0
  49. data/features/html/sun.html +7 -0
  50. data/features/image.feature +47 -0
  51. data/features/italic.feature +20 -0
  52. data/features/javascript.feature +28 -0
  53. data/features/label.feature +43 -0
  54. data/features/link.feature +56 -0
  55. data/features/list_item.feature +37 -0
  56. data/features/modal_dialog.feature +9 -0
  57. data/features/multi_elements.feature +498 -0
  58. data/features/nested_elements.feature +121 -0
  59. data/features/ordered_list.feature +46 -0
  60. data/features/page_level_actions.feature +116 -0
  61. data/features/paragraph.feature +33 -0
  62. data/features/populate_page_with.feature +25 -0
  63. data/features/radio_button.feature +51 -0
  64. data/features/radio_button_group.feature +28 -0
  65. data/features/sample-app/public/04-Death_Becomes_Fur.mp4 +0 -0
  66. data/features/sample-app/public/04-Death_Becomes_Fur.oga +0 -0
  67. data/features/sample-app/public/audio_video.html +19 -0
  68. data/features/sample-app/public/jquery-1.3.2.js +4376 -0
  69. data/features/sample-app/public/jquery.html +28 -0
  70. data/features/sample-app/public/movie.mp4 +0 -0
  71. data/features/sample-app/public/movie.ogg +0 -0
  72. data/features/sample-app/public/prototype-1.6.0.3.js +4320 -0
  73. data/features/sample-app/public/prototype.html +32 -0
  74. data/features/sample-app/sample_app.rb +35 -0
  75. data/features/section.feature +132 -0
  76. data/features/select_list.feature +84 -0
  77. data/features/span.feature +43 -0
  78. data/features/step_definations/area_steps.rb +23 -0
  79. data/features/step_definations/async_steps.rb +80 -0
  80. data/features/step_definations/audio_steps.rb +47 -0
  81. data/features/step_definations/bold_steps.rb +11 -0
  82. data/features/step_definations/button_steps.rb +52 -0
  83. data/features/step_definations/canvas_steps.rb +19 -0
  84. data/features/step_definations/checkbox_steps.rb +39 -0
  85. data/features/step_definations/div_steps.rb +28 -0
  86. data/features/step_definations/element_steps.rb +217 -0
  87. data/features/step_definations/file_field_steps.rb +31 -0
  88. data/features/step_definations/form_steps.rb +23 -0
  89. data/features/step_definations/frame_steps.rb +189 -0
  90. data/features/step_definations/generic_element_steps.rb +31 -0
  91. data/features/step_definations/heading_steps.rb +39 -0
  92. data/features/step_definations/hidden_field_steps.rb +27 -0
  93. data/features/step_definations/image_steps.rb +35 -0
  94. data/features/step_definations/italic_steps.rb +11 -0
  95. data/features/step_definations/javasript_steps.rb +52 -0
  96. data/features/step_definations/label_steps.rb +19 -0
  97. data/features/step_definations/link_steps.rb +42 -0
  98. data/features/step_definations/list_item_steps.rb +24 -0
  99. data/features/step_definations/modal_dialog_steps.rb +38 -0
  100. data/features/step_definations/multi_elements_steps.rb +557 -0
  101. data/features/step_definations/nested_elements_steps.rb +219 -0
  102. data/features/step_definations/ordered_list_steps.rb +49 -0
  103. data/features/step_definations/page_level_actions_steps.rb +172 -0
  104. data/features/step_definations/page_traversal_steps.rb +4 -0
  105. data/features/step_definations/paragraph_steps.rb +19 -0
  106. data/features/step_definations/populate_page_with_steps.rb +3 -0
  107. data/features/step_definations/radio_button_group_steps.rb +32 -0
  108. data/features/step_definations/radio_button_steps.rb +31 -0
  109. data/features/step_definations/section_steps.rb +271 -0
  110. data/features/step_definations/select_list_steps.rb +91 -0
  111. data/features/step_definations/span_steps.rb +23 -0
  112. data/features/step_definations/table_cell_steps.rb +27 -0
  113. data/features/step_definations/table_row_steps.rb +23 -0
  114. data/features/step_definations/table_steps.rb +109 -0
  115. data/features/step_definations/text_area_steps.rb +39 -0
  116. data/features/step_definations/text_field_steps.rb +39 -0
  117. data/features/step_definations/unordered_list_steps.rb +27 -0
  118. data/features/step_definations/video_steps.rb +27 -0
  119. data/features/support/ajax_test_environment.rb +26 -0
  120. data/features/support/audio_video_page.rb +23 -0
  121. data/features/support/env.rb +5 -0
  122. data/features/support/hooks.rb +3 -0
  123. data/features/support/page.rb +372 -0
  124. data/features/support/persistent_browser.rb +58 -0
  125. data/features/support/targets/firefox14_osx.rb +5 -0
  126. data/features/support/targets/firefox14_windows7.rb +5 -0
  127. data/features/support/url_helper.rb +50 -0
  128. data/features/table.feature +127 -0
  129. data/features/table_cell.feature +42 -0
  130. data/features/table_row.feature +30 -0
  131. data/features/text_area.feature +44 -0
  132. data/features/text_field.feature +53 -0
  133. data/features/unordered_list.feature +46 -0
  134. data/features/video.feature +66 -0
  135. data/lib/druid/accessors.rb +1082 -0
  136. data/lib/druid/assist.rb +653 -0
  137. data/lib/druid/element_locators.rb +21 -0
  138. data/lib/druid/elements/area.rb +9 -0
  139. data/lib/druid/elements/audio.rb +9 -0
  140. data/lib/druid/elements/bold.rb +8 -0
  141. data/lib/druid/elements/button.rb +12 -0
  142. data/lib/druid/elements/canvas.rb +9 -0
  143. data/lib/druid/elements/check_box.rb +9 -0
  144. data/lib/druid/elements/div.rb +9 -0
  145. data/lib/druid/elements/element.rb +187 -0
  146. data/lib/druid/elements/file_field.rb +9 -0
  147. data/lib/druid/elements/form.rb +9 -0
  148. data/lib/druid/elements/heading.rb +14 -0
  149. data/lib/druid/elements/hidden_field.rb +9 -0
  150. data/lib/druid/elements/image.rb +9 -0
  151. data/lib/druid/elements/italic.rb +9 -0
  152. data/lib/druid/elements/label.rb +8 -0
  153. data/lib/druid/elements/link.rb +9 -0
  154. data/lib/druid/elements/list_item.rb +9 -0
  155. data/lib/druid/elements/media.rb +11 -0
  156. data/lib/druid/elements/option.rb +9 -0
  157. data/lib/druid/elements/ordered_list.rb +29 -0
  158. data/lib/druid/elements/paragraph.rb +9 -0
  159. data/lib/druid/elements/radio_button.rb +9 -0
  160. data/lib/druid/elements/select_list.rb +30 -0
  161. data/lib/druid/elements/span.rb +9 -0
  162. data/lib/druid/elements/table.rb +92 -0
  163. data/lib/druid/elements/table_cell.rb +11 -0
  164. data/lib/druid/elements/table_row.rb +50 -0
  165. data/lib/druid/elements/text_area.rb +10 -0
  166. data/lib/druid/elements/text_field.rb +11 -0
  167. data/lib/druid/elements/unordered_list.rb +32 -0
  168. data/lib/druid/elements/video.rb +8 -0
  169. data/lib/druid/elements.rb +55 -0
  170. data/lib/druid/javascript/angularjs.rb +12 -0
  171. data/lib/druid/javascript/jquery.rb +12 -0
  172. data/lib/druid/javascript/prototype.rb +12 -0
  173. data/lib/druid/javascript/yui.rb +19 -0
  174. data/lib/druid/javascript_framework_facade.rb +76 -0
  175. data/lib/druid/locator_generator.rb +181 -0
  176. data/lib/druid/nested_elements.rb +56 -0
  177. data/lib/druid/page_factory.rb +115 -0
  178. data/lib/druid/page_populator.rb +104 -0
  179. data/lib/druid/section_collection.rb +17 -0
  180. data/lib/druid/version.rb +3 -0
  181. data/lib/druid.rb +452 -0
  182. data/spec/druid/accessors_spec.rb +1209 -0
  183. data/spec/druid/druid_spec.rb +295 -0
  184. data/spec/druid/element_locators_spec.rb +750 -0
  185. data/spec/druid/elements/bold_spec.rb +12 -0
  186. data/spec/druid/elements/button_spec.rb +23 -0
  187. data/spec/druid/elements/check_box_spec.rb +14 -0
  188. data/spec/druid/elements/div_spec.rb +10 -0
  189. data/spec/druid/elements/element_spec.rb +250 -0
  190. data/spec/druid/elements/file_field_spec.rb +13 -0
  191. data/spec/druid/elements/form_spec.rb +18 -0
  192. data/spec/druid/elements/heading_spec.rb +30 -0
  193. data/spec/druid/elements/hidden_field_spec.rb +10 -0
  194. data/spec/druid/elements/image_spec.rb +23 -0
  195. data/spec/druid/elements/itatic_spec.rb +11 -0
  196. data/spec/druid/elements/label_spec.rb +10 -0
  197. data/spec/druid/elements/link_spec.rb +10 -0
  198. data/spec/druid/elements/list_item_spec.rb +10 -0
  199. data/spec/druid/elements/media_spec.rb +12 -0
  200. data/spec/druid/elements/option_spec.rb +21 -0
  201. data/spec/druid/elements/ordered_list_spec.rb +38 -0
  202. data/spec/druid/elements/page_factory_spec.rb +40 -0
  203. data/spec/druid/elements/paragraph_spec.rb +12 -0
  204. data/spec/druid/elements/radio_button_spec.rb +14 -0
  205. data/spec/druid/elements/select_list_spec.rb +51 -0
  206. data/spec/druid/elements/span_spec.rb +10 -0
  207. data/spec/druid/elements/table_cell_spec.rb +14 -0
  208. data/spec/druid/elements/table_row_spec.rb +34 -0
  209. data/spec/druid/elements/table_spec.rb +47 -0
  210. data/spec/druid/elements/text_area_spec.rb +13 -0
  211. data/spec/druid/elements/text_field_spec.rb +22 -0
  212. data/spec/druid/elements/unordered_list_spec.rb +39 -0
  213. data/spec/druid/javascript_framework_facade_spec.rb +59 -0
  214. data/spec/druid/nested_element_spec.rb +128 -0
  215. data/spec/druid/page_factory_spec.rb +235 -0
  216. data/spec/druid/page_populator_spec.rb +173 -0
  217. data/spec/druid/page_section_spec.rb +70 -0
  218. data/spec/spec_helper.rb +9 -0
  219. metadata +517 -0
@@ -0,0 +1,42 @@
1
+ When(/^I select the link labeled "(.*?)"$/) do |text|
2
+ @page.google_search_id_element
3
+ @page.google_search_id
4
+ end
5
+
6
+ When(/^I locate the link by "(.*?)"$/) do |how|
7
+ @how = how
8
+ end
9
+
10
+ Then(/^I should be able to select the link$/) do
11
+ @page.send "google_search_#{@how}_element".to_sym
12
+ @page.send "google_search_#{@how}".to_sym
13
+ end
14
+
15
+ When(/^I retrieve a link element$/) do
16
+ @element = @page.google_search_id_element
17
+ end
18
+
19
+ Then(/^I should know it exists$/) do
20
+ expect(@element.exist?).to be true
21
+ end
22
+
23
+ Then(/^I should know it is visible$/) do
24
+ expect(@element.present?).to be true
25
+ end
26
+
27
+ When(/^I select a link labeled "(.*?)" and index "(.*?)"$/) do |label, index|
28
+ @page.send "#{label.downcase}#{index}".to_sym
29
+ end
30
+
31
+ When(/^I select a link while the script is executing$/) do
32
+ link = @page.link_element(:id => 'link_id')
33
+ link.click
34
+ end
35
+
36
+ When(/^I get the href for the link$/) do
37
+ @href = @page.google_search_id_element.href
38
+ end
39
+
40
+ Then(/^I should know it was "([^"]*)"$/) do |href|
41
+ expect(@href).to include href
42
+ end
@@ -0,0 +1,24 @@
1
+ When(/^I get the text from the list item$/) do
2
+ @text = @page.li_id
3
+ end
4
+
5
+ When(/^I locate the list item by "(.*?)"$/) do |how|
6
+ @element = @page.send "li_#{how}_element".to_sym
7
+ @text = @element.text
8
+ end
9
+
10
+ When(/^I search for the list item by "(.*?)" and "(.*?)"$/) do |param1, param2|
11
+ @text = @page.send "li_#{param1}_#{param2}"
12
+ end
13
+
14
+ When(/^I retrieve a list item element$/) do
15
+ @element = @page.li_id_element
16
+ end
17
+
18
+ When(/^I search for the list item while the script is executing$/) do
19
+ @text = @page.list_item_element(:id => 'li_id').text
20
+ end
21
+
22
+ Then(/^I should see that the list item exists$/) do
23
+ expect(@page.li_id?).to be true
24
+ end
@@ -0,0 +1,38 @@
1
+ class ModalPage
2
+ include Druid
3
+
4
+ button(:launch_modal, :id => 'launch_modal_button')
5
+ end
6
+
7
+ class ModalDialog
8
+ include Druid
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 Druid
17
+
18
+ button(:close_window, :id => 'close_window')
19
+ button(:close_window_with_delay, :id => 'delayed_close')
20
+ end
21
+
22
+ Given(/^I am on the modal page$/) do
23
+ @page = ModalPage.new(@driver)
24
+ @page.navigate_to(UrlHelper.modal)
25
+ end
26
+
27
+ When(/^I open a modal dialog$/) do
28
+ @page.modal_dialog do
29
+ @page.launch_modal
30
+ end
31
+ end
32
+
33
+ Then(/^I should be able to close the modal$/) do
34
+ @dialog = ModalDialog.new(@driver)
35
+ @dialog.attach_to_window(:title => 'Modal 1') do
36
+ @dialog.close_window
37
+ end
38
+ end
@@ -0,0 +1,557 @@
1
+ class MultiElementsPage
2
+ include Druid
3
+
4
+ divs(:the_divs, :class => 'div')
5
+ buttons(:the_buttons, :class => 'button')
6
+ text_fields(:the_text_fields, :class => 'textfield')
7
+ hidden_fields(:the_hidden_fields, :class => 'hiddenfield')
8
+ text_areas(:the_text_areas, :class => 'textarea')
9
+ select_lists(:the_select_lists, :class => 'selectlist')
10
+ links(:the_links, :class => 'link')
11
+ checkboxes(:the_checkboxes, :class => 'checkbox')
12
+ radio_buttons(:the_radio_buttons, :class => 'radio')
13
+ spans(:the_spans, :class => 'span')
14
+ tables(:the_tables, :class => 'table')
15
+ cells(:the_cells, :class => 'td')
16
+ images(:the_images, :class => 'image')
17
+ forms(:the_forms, :class => 'form')
18
+ list_items(:the_list_items, :class => 'li')
19
+ unordered_lists(:the_unordered_lists, :class => 'ul')
20
+ ordered_lists(:the_ordered_lists, :class => 'ol')
21
+ h1s(:the_h1s, :class => 'h1')
22
+ h2s(:the_h2s, :class => 'h2')
23
+ h3s(:the_h3s, :class => 'h3')
24
+ h4s(:the_h4s, :class => 'h4')
25
+ h5s(:the_h5s, :class => 'h5')
26
+ h6s(:the_h6s, :class => 'h6')
27
+ paragraphs(:the_paragraphs, :class => 'p')
28
+ labels(:the_labels, :class => 'label')
29
+ file_fields(:the_file_fields, :class => 'file_field_class')
30
+ elements(:generic_label, :label, :css => '.label')
31
+ divs(:block_divs) do |page|
32
+ page.div_elements(:class => 'div')
33
+ end
34
+ b(:bs)
35
+ i(:is)
36
+ end
37
+
38
+ Given(/^I am on the multi elements page$/) do
39
+ @page = MultiElementsPage.new(@driver)
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
+ expect(@elements.size).to eql num_buttons.to_i
49
+ end
50
+
51
+ Then(/^the value of button (\d+) should be "([^"]*)"$/) do |button_num, value|
52
+ expect(@elements[button_num.to_i - 1].value).to eql 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
+ expect(@elements.size).to eql num_text_fields.to_i
61
+ end
62
+
63
+ Then(/^the value of text field (\d+) should be "([^"]*)"$/) do |text_field_num, value|
64
+ expect(@elements[text_field_num.to_i - 1].value).to eql 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
+ expect(@elements.size).to eql num_hidden_fields.to_i
73
+ end
74
+
75
+ Then(/^the value of hidden field (\d+) should be "([^"]*)"$/) do |hidden_field_num, value|
76
+ expect(@elements[hidden_field_num.to_i - 1].value).to eql 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
+ expect(@elements.size).to eql num_text_areas.to_i
85
+ end
86
+
87
+ Then(/^the value of text area (\d+) should be "([^"]*)"$/) do |text_area_num, value|
88
+ expect(@elements[text_area_num.to_i - 1].value).to eql 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
+ expect(@elements.size).to eql num_select_lists.to_i
97
+ end
98
+
99
+ Then(/^the value of select list (\d+) should be "([^"]*)"$/) do |select_list_num, value|
100
+ expect(@elements[select_list_num.to_i - 1].value).to eql value
101
+ end
102
+
103
+ When(/^I select the link with class "([^"]*)"$/) do |class_name|
104
+ @elements = @page.link_elements(:class => class_name)
105
+ end
106
+
107
+ Then(/^I should have (\d+) links$/) do |num_links|
108
+ expect(@elements.size).to eql num_links.to_i
109
+ end
110
+
111
+ Then(/^the text of link (\d+) should be "([^"]*)"$/) do |link_num, text|
112
+ expect(@elements[link_num.to_i - 1].text).to eql 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
+ expect(@elements.size).to eql num_checkboxes.to_i
121
+ end
122
+
123
+ Then(/^the value of checkbox (\d+) should be "([^"]*)"$/) do |checkbox_num, value|
124
+ expect(@elements[checkbox_num.to_i - 1].value).to eql value
125
+ end
126
+
127
+ When(/^I select the radio buttons 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
+ expect(@elements.size).to eql num_radio_buttons.to_i
133
+ end
134
+
135
+ Then(/^the value of radio button (\d+) should be "([^"]*)"$/) do |radio_button_num, value|
136
+ expect(@elements[radio_button_num.to_i - 1].value).to eql value
137
+ end
138
+
139
+ When(/^I select the divs 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
+ expect(@elements.size).to eql num_divs.to_i
145
+ end
146
+
147
+ Then(/^the text of div (\d+) should be "([^"]*)"$/) do |div_num, text|
148
+ expect(@elements[div_num.to_i - 1].text).to eql 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
+ expect(@elements.size).to eql num_spans.to_i
157
+ end
158
+
159
+ Then(/^the text of span (\d+) should be "([^"]*)"$/) do |span_num, text|
160
+ expect(@elements[span_num.to_i - 1].text).to eql 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
+ expect(@elements.size).to eql num_tables.to_i
169
+ end
170
+
171
+ Then(/^the first row first column for table (\d+) should have "([^"]*)"$/) do |table_num, text|
172
+ expect(@elements[table_num.to_i - 1][0][0].text).to eql text
173
+ end
174
+
175
+ When(/^I select the cells with class "([^"]*)"$/) do |class_name|
176
+ @elements = @page.cell_elements(:class => class_name)
177
+ end
178
+
179
+ Then(/^I should have (\d+) cells$/) do |num_cells|
180
+ expect(@elements.size).to eql num_cells.to_i
181
+ end
182
+
183
+ Then(/^the text for cell (\d+) should be "([^"]*)"$/) do |cell_num, text|
184
+ expect(@elements[cell_num.to_i - 1].text).to eql 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
+ expect(@elements.size).to eql num_images.to_i
193
+ end
194
+
195
+ Then(/^the alt for image (\d+) should be "([^"]*)"$/) do |image_num , alt|
196
+ expect(@elements[image_num.to_i - 1].attribute(:alt)).to eql 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 |num_forms|
204
+ expect(@elements.size).to eql num_forms.to_i
205
+ end
206
+
207
+ Then(/^the action for form (\d+) should be "([^"]*)"$/) do |form_num, action|
208
+ expect(@elements[form_num.to_i - 1].attribute(:action)).to 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
+ expect(@elements.size).to eql num_list_items.to_i
217
+ end
218
+
219
+ Then(/^the text for list item (\d+) should be "([^"]*)"$/) do |list_item_num, text|
220
+ expect(@elements[list_item_num.to_i - 1].text).to eql text
221
+ end
222
+
223
+ When(/^I select the unordered lists 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_list|
228
+ expect(@elements.size).to eql num_unordered_list.to_i
229
+ end
230
+
231
+ Then(/^the text for the first item in unordered list (\d+) should be "([^"]*)"$/) do |ul_num, text|
232
+ expect(@elements[ul_num.to_i - 1][0].text).to eql 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
+ expect(@elements.size).to eql 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
+ expect(@elements[ol_num.to_i - 1][0].text).to eql 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
+ expect(@elements.size).to eql num_h1s.to_i
253
+ end
254
+
255
+ Then(/^the text for h1 (\d+) should be "([^"]*)"$/) do |h1_num, text|
256
+ expect(@elements[h1_num.to_i - 1].text).to eql text
257
+ end
258
+
259
+ When(/^I select the h2s with 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
+ expect(@elements.size).to eql num_h2s.to_i
265
+ end
266
+
267
+ Then(/^the text for h2 (\d+) should be "([^"]*)"$/) do |h2_num, text|
268
+ expect(@elements[h2_num.to_i - 1].text).to eql text
269
+ end
270
+
271
+ When(/^I select the h3s with 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
+ expect(@elements.size).to eql num_h3s.to_i
277
+ end
278
+
279
+ Then(/^the text for h3 (\d+) should be "([^"]*)"$/) do |h3_num, text|
280
+ expect(@elements[h3_num.to_i - 1].text).to eql text
281
+ end
282
+
283
+ When(/^I select the h4s with 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
+ expect(@elements.size).to eql num_h4s.to_i
289
+ end
290
+
291
+ Then(/^the text for h4 (\d+) should be "([^"]*)"$/) do |h4_num, text|
292
+ expect(@elements[h4_num.to_i - 1].text).to eql text
293
+ end
294
+
295
+ When(/^I select the h5s with 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
+ expect(@elements.size).to eql num_h5s.to_i
301
+ end
302
+
303
+ Then(/^the text for h5 (\d+) should be "([^"]*)"$/) do |h5_num, text|
304
+ expect(@elements[h5_num.to_i - 1].text).to eql text
305
+ end
306
+
307
+ When(/^I select the h6s with 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
+ expect(@elements.size).to eql num_h6s.to_i
313
+ end
314
+
315
+ Then(/^the text for h6 (\d+) should be "([^"]*)"$/) do |h6_num, text|
316
+ expect(@elements[h6_num.to_i - 1].text).to eql text
317
+ end
318
+
319
+ When(/^I select the paragraphs 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
+ expect(@elements.size).to eql num_paragraphs.to_i
325
+ end
326
+
327
+ Then(/^the text for paragraph (\d+) should be "([^"]*)"$/) do |paragraph_num, text|
328
+ expect(@elements[paragraph_num.to_i - 1].text).to eql text
329
+ end
330
+
331
+ When(/^I select the labels with class "([^"]*)"$/) do |class_name|
332
+ @elements = @page.label_elements(:class => class_name)
333
+ end
334
+
335
+ Then(/^I should have (\d+) labels$/) do |num_labels|
336
+ expect(@elements.size).to eql num_labels.to_i
337
+ end
338
+
339
+ Then(/^the text for label (\d+) should be "([^"]*)"$/) do |label_num, text|
340
+ expect(@elements[label_num.to_i - 1].text).to eql text
341
+ end
342
+
343
+ When(/^I select all buttons using no identifier$/) do
344
+ @elements = @page.button_elements
345
+ end
346
+
347
+ When(/^I select all text fields using no identifier$/) do
348
+ @elements = @page.text_field_elements
349
+ end
350
+
351
+ When(/^I select all hidden fields using no identifier$/) do
352
+ @elements = @page.hidden_field_elements
353
+ end
354
+
355
+ When(/^I select all text areas using no identifier$/) do
356
+ @elements = @page.text_area_elements
357
+ end
358
+
359
+ When(/^I select all select lists using no identifier$/) do
360
+ @elements = @page.select_list_elements
361
+ end
362
+
363
+ When(/^I select all links using no identifier$/) do
364
+ @elements = @page.link_elements
365
+ end
366
+
367
+ When(/^I select all checkboxes using no identifier$/) do
368
+ @elements = @page.checkboxes_elements
369
+ end
370
+
371
+ When(/^I select all radio buttons using no identifier$/) do
372
+ @elements = @page.radio_button_elements
373
+ end
374
+
375
+ When(/^I select all divs using no identifier$/) do
376
+ @elements = @page.div_elements
377
+ end
378
+
379
+ When(/^I select all spans using no identifier$/) do
380
+ @elements = @page.span_elements
381
+ end
382
+
383
+ When(/^I select all tables using no identifier$/) do
384
+ @elements = @page.table_elements
385
+ end
386
+
387
+ When(/^I select all cells using no identifier$/) do
388
+ @elements = @page.cell_elements
389
+ end
390
+
391
+ When(/^I select the images using no identifier$/) do
392
+ @elements = @page.image_elements
393
+ end
394
+
395
+ When(/^I select the forms using no identifier$/) do
396
+ @elements = @page.form_elements
397
+ end
398
+
399
+ When(/^I select all list items using no identifier$/) do
400
+ @elements = @page.list_item_elements
401
+ end
402
+
403
+ When(/^I select all unordered lists using no identifier$/) do
404
+ @elements = @page.unordered_list_elements
405
+ end
406
+
407
+ When(/^I select all ordered lists using no identifier$/) do
408
+ @elements = @page.ordered_list_elements
409
+ end
410
+
411
+ When /^I select all h(\d+)s using no identifier$/ do |num|
412
+ @elements = @page.send "h#{num}_elements"
413
+ end
414
+
415
+ When(/^I select all paragraphs using no identifier$/) do
416
+ @elements = @page.paragraph_elements
417
+ end
418
+
419
+ When(/^I select all 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
+ expect(@elements.size).to eql num_file_fields.to_i
429
+ end
430
+
431
+ Then(/^the title for file field (\d+) should be "([^"]*)"$/) do |file_field_num, title|
432
+ expect(@elements[file_field_num.to_i - 1].attribute('title')).to eql title
433
+ end
434
+
435
+ When(/^I select all 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 field 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 links 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 buttons 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 lists 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 paragraphs 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
+ expect(@elements.size).to eql num_bs.to_i
537
+ end
538
+
539
+ Then(/^the text for b (\d+) should be "([^"]*)"$/) do |b_num, text|
540
+ expect(@elements[b_num.to_i - 1].text).to eql text
541
+ end
542
+
543
+ When(/^I select the is$/) do
544
+ @elements = @page.i_elements
545
+ end
546
+
547
+ Then(/^I should have (\d+) is$/) do |num_is|
548
+ expect(@elements.size).to eql num_is.to_i
549
+ end
550
+
551
+ Then(/^the text for i (\d+) should be "([^"]*)"$/) do |i_num, text|
552
+ expect(@elements[i_num.to_i - 1].text).to eql text
553
+ end
554
+
555
+ When(/^I select all check boxes using no identifier$/) do
556
+ @elements = @page.checkbox_elements
557
+ end