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,27 @@
1
+ When /^I search for the audio element by "([^\"]*)"$/ do |how|
2
+ @element = @page.send "audio_#{how}_element"
3
+ end
4
+
5
+ When /^I search for the audio element by "([^"]*)" and "([^"]*)"$/ do |param1, param2|
6
+ @element = @page.send "audio_#{param1}_#{param2}_element"
7
+ end
8
+
9
+ Then /^I should know the audio is not autoplay$/ do
10
+ @element.should_not be_autoplay
11
+ end
12
+
13
+ Then /^I should know that the controls are displayed$/ do
14
+ @element.should have_controls
15
+ end
16
+
17
+ Then /^I should know that the audio is paused$/ do
18
+ @element.should be_paused
19
+ end
20
+
21
+ Then /^I should know that the duration is greater than (\d+) seconds$/ do |duration|
22
+ @element.duration.should > duration.to_f
23
+ end
24
+
25
+ Then /^I should know that its volume is (\d+)$/ do |volume|
26
+ @element.volume.should == volume.to_i
27
+ end
@@ -0,0 +1,12 @@
1
+ When /^I get the bold text for the "([^\"]*)" element$/ do |el|
2
+ @b = @page.send "#{el}_id"
3
+ end
4
+
5
+ Then /^I should see "([^\"]*)" in bold$/ do |text|
6
+ @b.should == text
7
+ end
8
+
9
+ When /^I search bold text for the (\w+) by "([^"]*)"$/ do |text_decorator, type|
10
+ @b = @page.send "#{text_decorator}_#{type}"
11
+ end
12
+
@@ -0,0 +1,48 @@
1
+ When /^I click the button$/ do
2
+ @page.button_id
3
+ end
4
+
5
+ When /^I click the button with type image$/ do
6
+ @page.button_image_id
7
+ end
8
+
9
+ When /^I click the image button using src$/ do
10
+ @page.button_image_src
11
+ end
12
+
13
+ When /^I click the image button using alt$/ do
14
+ @page.button_image_alt
15
+ end
16
+
17
+ When /^I search for the button by "([^\"]*)"$/ do |how|
18
+ @how = how
19
+ end
20
+
21
+ When /^I search for the button by "([^"]*)" and "([^"]*)"$/ do |param1, param2|
22
+ @how = "#{param1}_#{param2}"
23
+ end
24
+
25
+ Then /^I should be able to click the button$/ do
26
+ @page.send "button_#{@how}"
27
+ end
28
+
29
+ Then /^I should be able to click the real button$/ do
30
+ @page.send "btn_#{@how}"
31
+ end
32
+
33
+ When /^I find a button while the script is executing$/ do
34
+ @button = @page.button_element(:id => 'button_id')
35
+ end
36
+
37
+ Then /^I should be able to click the button element$/ do
38
+ @button.click
39
+ end
40
+
41
+ Then /^I should see that the button exists$/ do
42
+ @page.button_id?.should == true
43
+ end
44
+
45
+
46
+ When(/^I get the text for a button that is a "([^"]*)"$/) do |tagname|
47
+ @text = @page.button_element(:id => "#{tagname}_button").text
48
+ end
@@ -0,0 +1,15 @@
1
+ When /^I search for the canvas by "([^\"]*)"$/ do |how|
2
+ @element = @page.send "canvas_#{how}_element"
3
+ end
4
+
5
+ Then /^I should see that the canvas width is "([^\"]*)"$/ do |width|
6
+ @element.width.should == width.to_i
7
+ end
8
+
9
+ Then /^I should see that the canvas height is "([^\"]*)"$/ do |height|
10
+ @element.height.should == height.to_i
11
+ end
12
+
13
+ When /^I search for the canvas element by "([^"]*)" and "([^"]*)"$/ do |param1, param2|
14
+ @element = @page.send "canvas_#{param1}_#{param2}_element"
15
+ end
@@ -0,0 +1,35 @@
1
+ When /^I select the First check box$/ do
2
+ @page.check_cb_id
3
+ end
4
+
5
+ Then /^the First check box should be selected$/ do
6
+ @page.cb_id_checked?.should be true
7
+ end
8
+
9
+ When /^I unselect the First check box$/ do
10
+ @page.uncheck_cb_id
11
+ end
12
+
13
+ Then /^the First check box should not be selected$/ do
14
+ @page.cb_id_checked?.should be false
15
+ end
16
+
17
+ When /^I search for the check box by "([^\"]*)"$/ do |how|
18
+ @how = how
19
+ end
20
+
21
+ When /^I search for the check box by "([^"]*)" and "([^"]*)"$/ do |param1, param2|
22
+ @how = "#{param1}_#{param2}"
23
+ end
24
+
25
+ Then /^I should be able to check the check box$/ do
26
+ @page.send "check_cb_#{@how}".to_sym
27
+ end
28
+
29
+ When /^I select the first check box while the script is executing$/ do
30
+ @page.checkbox_element(:id => 'cb_id').check
31
+ end
32
+
33
+ Then /^I should see that the checkbox exists$/ do
34
+ @page.button_id?.should == true
35
+ end
@@ -0,0 +1,19 @@
1
+ When /^I get the text from the div$/ do
2
+ @text = @page.div_id
3
+ end
4
+
5
+ When /^I search for the div by "([^\"]*)"$/ do |how|
6
+ @text = @page.send "div_#{how}".to_sym
7
+ end
8
+
9
+ When /^I search for the div by "([^"]*)" and "([^"]*)"$/ do |param1, param2|
10
+ @text = @page.send "div_#{param1}_#{param2}".to_sym
11
+ end
12
+
13
+ When /^I get the text from a div while the script is executing$/ do
14
+ @text = @page.div_element(:id => 'div_id').text
15
+ end
16
+
17
+ Then /^I should see that the div exists$/ do
18
+ @page.div_id?.should == true
19
+ end
@@ -0,0 +1,266 @@
1
+ When /^I retrieve a check box element$/ do
2
+ @element = @page.cb_id_element
3
+ end
4
+
5
+ When /^I retrieve a link element$/ do
6
+ @element = @page.google_search_id_element
7
+ end
8
+
9
+ When /^I retrieve a radio button$/ do
10
+ @element = @page.milk_id_element
11
+ end
12
+
13
+ When /^I retrieve a select list$/ do
14
+ @element = @page.sel_list_id_element
15
+ end
16
+
17
+ When /^I retrieve a text field$/ do
18
+ @element = @page.text_field_id_element
19
+ end
20
+
21
+ When /^I retrieve the text area$/ do
22
+ @element = @page.text_area_id_element
23
+ end
24
+
25
+ When /^I retrieve the div element$/ do
26
+ @element = @page.div_id_element
27
+ end
28
+
29
+ When /^I retrieve a table element$/ do
30
+ @element = @page.table_id_element
31
+ end
32
+
33
+ When /^I retrieve a table with thead element$/ do
34
+ @element = @page.table_with_thead_id_element
35
+ end
36
+
37
+ When /^I retrieve a button element$/ do
38
+ @element = @page.button_id_element
39
+ end
40
+
41
+ When /^I retrieve table cell$/ do
42
+ @element = @page.cell_id_element
43
+ end
44
+
45
+ When /^I retrieve a heading element$/ do
46
+ @element = @page.h1_id_element
47
+ end
48
+
49
+ When /^I retrieve the area element$/ do
50
+ @element = @page.area_id_element
51
+ end
52
+
53
+ When /^I retrieve the canvas element$/ do
54
+ @element = @page.canvas_id_element
55
+ end
56
+
57
+ When /^I retrieve the audio element$/ do
58
+ @element = @page.audio_id_element
59
+ end
60
+
61
+ When /^I locate the form$/ do
62
+ @element = @page.form_id_element
63
+ end
64
+
65
+ Then /^I should know it exists$/ do
66
+ @element.should exist
67
+ end
68
+
69
+ Then /^I should know it is visible$/ do
70
+ @element.should be_visible
71
+ end
72
+
73
+ Then /^I should know it is not visible$/ do
74
+ @element.should_not be_visible
75
+ end
76
+
77
+ Then /^I should know the text is "(.*)"$/ do |text|
78
+ @element.text.should == text
79
+ end
80
+
81
+ Then /^I should know the html is "(.*)"$/ do |html|
82
+ @element.html.should == html
83
+ end
84
+
85
+ Then /^I should know the text includes "(.*)"$/ do |text|
86
+ @element.text.should include text
87
+ end
88
+
89
+ Then /^I should know the value is "(.*)"$/ do |value|
90
+ @element.value.should == value
91
+ end
92
+
93
+ Then /^I should know the value is nil$/ do
94
+ @element.value.should be_nil
95
+ end
96
+
97
+ Then /^I should know it is equal to itself$/ do
98
+ @element.should == @element
99
+ end
100
+
101
+ Then /^I should know the tag name is "(.+)"$/ do |tagname|
102
+ @element.tag_name.should == tagname
103
+ end
104
+
105
+ Then /^I should know the attribute "(.+)" is false$/ do |attr_name|
106
+ @attr = @element.attribute(attr_name)
107
+ @attr.should be_false if @attr.is_a? FalseClass
108
+ @attr.should == "false" if @attr.is_a? String
109
+ end
110
+
111
+ Then /^I should be able to click it$/ do
112
+ @element.click
113
+ end
114
+
115
+ When /^I retrieve a list item element$/ do
116
+ @element = @page.li_id_element
117
+ end
118
+
119
+ When /^I retrieve an unordered list element$/ do
120
+ @element = @page.ul_id_element
121
+ end
122
+
123
+ When /^I retrieve an ordered list element$/ do
124
+ @element = @page.ol_id_element
125
+ end
126
+
127
+ When /^I clear the text field$/ do
128
+ @page.text_field_id_element.clear
129
+ end
130
+
131
+ When /^I check an enabled button$/ do
132
+ @element = @page.button_id_element
133
+ end
134
+
135
+ Then /^it should know it is enabled$/ do
136
+ @element.should be_enabled
137
+ end
138
+
139
+ When /^I check a disabled button$/ do
140
+ @element = @page.disabled_button_element
141
+ end
142
+
143
+ Then /^it should know it is not enabled$/ do
144
+ @element.should_not be_enabled
145
+ end
146
+
147
+ Then /^it should know that is it not disabled$/ do
148
+ @element.should_not be_disabled
149
+ end
150
+
151
+ Then /^it should know that it is disabled$/ do
152
+ @element.should be_disabled
153
+ end
154
+
155
+ When /^I set the focus to the test text_field using the onfocus event$/ do
156
+ @page.text_field_element(:id => 'onfocus_text_field').fire_event('onfocus')
157
+ end
158
+
159
+ Then /^I should see the onfocus text "([^\"]*)"$/ do |text|
160
+ @page.div_element(:id => 'onfocus_test').text.should == text
161
+ end
162
+
163
+ When /^I set the focus on the test text_field$/ do
164
+ @page.text_field_element(:id => 'onfocus_text_field').focus
165
+ end
166
+
167
+ When /^I find the child link element$/ do
168
+ @element = @page.child_element
169
+ end
170
+
171
+ When /^ask for the parent element$/ do
172
+ @parent = @element.parent
173
+ end
174
+
175
+ Then /^I should have a div parent$/ do
176
+ @parent.should be_instance_of ::PageObject::Elements::Div
177
+ end
178
+
179
+ Then /^I should know that the text_field has the focus$/ do
180
+ element = @page.element_with_focus
181
+ element.should_not be_nil
182
+ element.class.should == PageObject::Elements::TextField
183
+ end
184
+
185
+ When /^I set the focus to the test text_field$/ do
186
+ @page.text_field_element(:id => 'onfocus_text_field').focus
187
+ end
188
+
189
+ When /^I retrieve the label element$/ do
190
+ @element = @page.label_id_element
191
+ end
192
+
193
+ Then /^I should be able to flash it$/ do
194
+ @element.flash
195
+ end
196
+
197
+ class HoverPage
198
+ include PageObject
199
+
200
+ link(:hello)
201
+ end
202
+
203
+ Given /^I am on the hover page$/ do
204
+ @page = HoverPage.new(@browser)
205
+ @page.navigate_to UrlHelper.hover
206
+ end
207
+
208
+ When /^I hover over the hello link$/ do
209
+ @page.hello_element.hover
210
+ end
211
+
212
+ Then /^the font size should be "([^\"]*)"$/ do |font_size|
213
+ @page.hello_element.style('font-size').should == font_size if ENV['BROWSER'] == 'chrome'
214
+ end
215
+
216
+ Then /^I should know its id is "([^\"]*)"$/ do |id|
217
+ @element.id.should == id
218
+ end
219
+
220
+ class DoubleClickPage
221
+ include PageObject
222
+ button(:click)
223
+ paragraph(:p_text)
224
+ end
225
+
226
+ Given /^I am on the Double Click page$/ do
227
+ @page = DoubleClickPage.new(@browser)
228
+ @page.navigate_to UrlHelper.double_click
229
+ end
230
+
231
+ When /^I double click the button$/ do
232
+ @page.click_element.double_click
233
+ end
234
+
235
+ Then /^the paragraph should read "([^\"]*)"$/ do |expected_text|
236
+ @page.p_text.should == expected_text
237
+ end
238
+
239
+ When /^I scroll the heading element into view$/ do
240
+ @element.scroll_into_view
241
+ end
242
+
243
+ Then /^the heading element should be visible$/ do
244
+ @element.should be_visible
245
+ end
246
+
247
+ When /^I retrieve a div using data\-entity$/ do
248
+ @element = @page.div_data_entity_element
249
+ end
250
+
251
+ When(/^I retrieve the figure using the declaration$/) do
252
+ @element = @page.figure_id_element
253
+ end
254
+
255
+ When(/^I retrieve the figure using the element$/) do
256
+ @element = @page.figure_element(:id => 'figure_id')
257
+ end
258
+
259
+ Then(/^I should see the figure contains an image$/) do
260
+ @element.image_element.should_not be_nil
261
+ end
262
+
263
+ Then(/^I should know the attribute "(.*?)" includes "(.+)"$/) do |attribute, included|
264
+ @attr = @element.attribute(attribute)
265
+ @attr.should include included
266
+ end
@@ -0,0 +1,19 @@
1
+ When /^I set the file field to the step definition file$/ do
2
+ @page.file_field_id = __FILE__
3
+ end
4
+
5
+ Then /^its\' value should equal that file$/ do
6
+ __FILE__.should include @page.file_field_id_element.value
7
+ end
8
+
9
+ When /^I search for the file field by "([^\"]*)"$/ do |how|
10
+ @how = how
11
+ end
12
+
13
+ When /^I search for the file field by "([^\"]*)" and "([^\"]*)"$/ do |param1, param2|
14
+ @how = "#{param1}_#{param2}"
15
+ end
16
+
17
+ Then /^I should be able to set the file field$/ do
18
+ @page.send "file_field_#{@how}=", __FILE__
19
+ end