meeane-page-object 0.1.10 → 0.1.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (253) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +7 -7
  3. data/.rspec +2 -2
  4. data/.ruby-gemset +1 -1
  5. data/.ruby-version +1 -1
  6. data/.travis.yml +10 -10
  7. data/ChangeLog +790 -790
  8. data/Gemfile +13 -13
  9. data/Guardfile +20 -20
  10. data/LICENSE +20 -20
  11. data/README.md +1 -1
  12. data/Rakefile +35 -35
  13. data/cucumber.yml +10 -10
  14. data/features/area.feature +35 -35
  15. data/features/async.feature +30 -30
  16. data/features/audio.feature +68 -68
  17. data/features/button.feature +88 -87
  18. data/features/canvas.feature +37 -37
  19. data/features/check_box.feature +55 -55
  20. data/features/div.feature +45 -45
  21. data/features/element.feature +322 -322
  22. data/features/file_field.feature +40 -40
  23. data/features/form.feature +43 -43
  24. data/features/frames.feature +75 -75
  25. data/features/generic_elements.feature +29 -29
  26. data/features/gxt_table_extension.feature +24 -24
  27. data/features/headings.feature +97 -97
  28. data/features/hidden_field.feature +45 -45
  29. data/features/html/async.html +36 -36
  30. data/features/html/double_click.html +12 -12
  31. data/features/html/failure.html +7 -7
  32. data/features/html/frame_1.html +17 -17
  33. data/features/html/frame_2.html +15 -15
  34. data/features/html/frame_3.html +14 -14
  35. data/features/html/frames.html +12 -12
  36. data/features/html/hover.html +11 -11
  37. data/features/html/iframes.html +12 -12
  38. data/features/html/indexed_property.html +51 -51
  39. data/features/html/modal.html +17 -17
  40. data/features/html/modal_1.html +37 -37
  41. data/features/html/modal_2.html +26 -26
  42. data/features/html/multi_elements.html +144 -144
  43. data/features/html/nested_elements.html +77 -77
  44. data/features/html/nested_frame_2.html +11 -11
  45. data/features/html/nested_frame_3.html +14 -14
  46. data/features/html/nested_frames.html +10 -10
  47. data/features/html/static_elements.html +233 -226
  48. data/features/html/success.html +7 -7
  49. data/features/html/sun.html +7 -7
  50. data/features/image.feature +50 -50
  51. data/features/indexed_property.feature +97 -97
  52. data/features/javascript.feature +27 -27
  53. data/features/label.feature +46 -46
  54. data/features/link.feature +52 -52
  55. data/features/list_item.feature +36 -36
  56. data/features/modal_dialog.feature +15 -15
  57. data/features/multi_elements.feature +486 -486
  58. data/features/nested_elements.feature +117 -117
  59. data/features/ordered_list.feature +56 -56
  60. data/features/page_level_actions.feature +90 -90
  61. data/features/paragraph.feature +35 -35
  62. data/features/radio_button.feature +58 -58
  63. data/features/radio_button_collinson.feature +12 -58
  64. data/features/radio_button_group.feature +29 -29
  65. data/features/sample-app/public/jquery-1.3.2.js +4376 -4376
  66. data/features/sample-app/public/jquery.html +30 -30
  67. data/features/sample-app/public/prototype-1.6.0.3.js +4319 -4319
  68. data/features/sample-app/public/prototype.html +35 -35
  69. data/features/sample-app/sample_app.rb +35 -35
  70. data/features/select_list.feature +86 -86
  71. data/features/span.feature +37 -37
  72. data/features/step_definitions/accessor_steps.rb +60 -60
  73. data/features/step_definitions/area_steps.rb +19 -19
  74. data/features/step_definitions/async_steps.rb +83 -83
  75. data/features/step_definitions/audio_steps.rb +27 -27
  76. data/features/step_definitions/button_steps.rb +43 -43
  77. data/features/step_definitions/canvas_steps.rb +15 -15
  78. data/features/step_definitions/check_box_steps.rb +35 -35
  79. data/features/step_definitions/div_steps.rb +19 -19
  80. data/features/step_definitions/element_steps.rb +266 -266
  81. data/features/step_definitions/file_field_steps.rb +19 -19
  82. data/features/step_definitions/form_steps.rb +18 -18
  83. data/features/step_definitions/frames_steps.rb +159 -159
  84. data/features/step_definitions/generic_element_steps.rb +31 -31
  85. data/features/step_definitions/gxt_table_steps.rb +58 -58
  86. data/features/step_definitions/headings_steps.rb +12 -12
  87. data/features/step_definitions/hidden_field_steps.rb +26 -26
  88. data/features/step_definitions/image_steps.rb +27 -27
  89. data/features/step_definitions/indexed_property_steps.rb +128 -128
  90. data/features/step_definitions/javascript_steps.rb +52 -52
  91. data/features/step_definitions/label_steps.rb +19 -19
  92. data/features/step_definitions/link_steps.rb +40 -40
  93. data/features/step_definitions/list_item_steps.rb +19 -19
  94. data/features/step_definitions/modal_dialog_steps.rb +62 -62
  95. data/features/step_definitions/multi_elements_steps.rb +528 -528
  96. data/features/step_definitions/nested_elements_steps.rb +212 -212
  97. data/features/step_definitions/ordered_list_steps.rb +23 -23
  98. data/features/step_definitions/page_level_actions_steps.rb +135 -135
  99. data/features/step_definitions/page_traversal_steps.rb +4 -4
  100. data/features/step_definitions/paragraph_steps.rb +28 -28
  101. data/features/step_definitions/radio_button_collinson_steps.rb +2 -46
  102. data/features/step_definitions/radio_button_group_steps.rb +35 -35
  103. data/features/step_definitions/radio_button_steps.rb +26 -46
  104. data/features/step_definitions/select_list_steps.rb +65 -65
  105. data/features/step_definitions/span_steps.rb +19 -19
  106. data/features/step_definitions/table_cell_steps.rb +14 -14
  107. data/features/step_definitions/table_steps.rb +66 -66
  108. data/features/step_definitions/text_area_steps.rb +34 -34
  109. data/features/step_definitions/text_field_steps.rb +35 -35
  110. data/features/step_definitions/unordered_list_steps.rb +23 -23
  111. data/features/step_definitions/video_steps.rb +45 -45
  112. data/features/support/ajax_text_environment.rb +26 -26
  113. data/features/support/env.rb +8 -8
  114. data/features/support/hooks.rb +8 -8
  115. data/features/support/page.rb +370 -364
  116. data/features/support/persistent_browser.rb +70 -70
  117. data/features/support/targets/firefox14_osx.rb +6 -6
  118. data/features/support/targets/firefox14_windows7.rb +6 -6
  119. data/features/support/url_helper.rb +57 -57
  120. data/features/table.feature +114 -114
  121. data/features/table_cell.feature +45 -45
  122. data/features/text_area.feature +51 -51
  123. data/features/text_field.feature +70 -70
  124. data/features/unordered_list.feature +56 -56
  125. data/features/video.feature +73 -73
  126. data/lib/page-object.rb +408 -408
  127. data/lib/page-object/accessors.rb +1313 -1313
  128. data/lib/page-object/core_ext/string.rb +4 -4
  129. data/lib/page-object/element_locators.rb +21 -21
  130. data/lib/page-object/elements.rb +59 -59
  131. data/lib/page-object/elements/area.rb +31 -31
  132. data/lib/page-object/elements/audio.rb +9 -9
  133. data/lib/page-object/elements/button.rb +35 -35
  134. data/lib/page-object/elements/canvas.rb +23 -23
  135. data/lib/page-object/elements/check_box.rb +37 -37
  136. data/lib/page-object/elements/div.rb +19 -19
  137. data/lib/page-object/elements/element.rb +226 -226
  138. data/lib/page-object/elements/file_field.rb +38 -38
  139. data/lib/page-object/elements/form.rb +36 -36
  140. data/lib/page-object/elements/heading.rb +15 -15
  141. data/lib/page-object/elements/hidden_field.rb +22 -22
  142. data/lib/page-object/elements/image.rb +36 -36
  143. data/lib/page-object/elements/label.rb +36 -36
  144. data/lib/page-object/elements/link.rb +46 -46
  145. data/lib/page-object/elements/list_item.rb +19 -19
  146. data/lib/page-object/elements/media.rb +45 -45
  147. data/lib/page-object/elements/option.rb +10 -10
  148. data/lib/page-object/elements/ordered_list.rb +50 -50
  149. data/lib/page-object/elements/paragraph.rb +9 -9
  150. data/lib/page-object/elements/radio_button.rb +37 -37
  151. data/lib/page-object/elements/select_list.rb +42 -42
  152. data/lib/page-object/elements/span.rb +19 -19
  153. data/lib/page-object/elements/table.rb +68 -68
  154. data/lib/page-object/elements/table_cell.rb +28 -28
  155. data/lib/page-object/elements/table_row.rb +50 -50
  156. data/lib/page-object/elements/text_area.rb +38 -38
  157. data/lib/page-object/elements/text_field.rb +42 -42
  158. data/lib/page-object/elements/unordered_list.rb +51 -51
  159. data/lib/page-object/elements/video.rb +18 -18
  160. data/lib/page-object/indexed_properties.rb +36 -36
  161. data/lib/page-object/javascript/jquery.rb +14 -14
  162. data/lib/page-object/javascript/prototype.rb +14 -14
  163. data/lib/page-object/javascript/yui.rb +18 -18
  164. data/lib/page-object/javascript_framework_facade.rb +78 -78
  165. data/lib/page-object/loads_platform.rb +26 -26
  166. data/lib/page-object/locator_generator.rb +129 -129
  167. data/lib/page-object/nested_elements.rb +17 -17
  168. data/lib/page-object/page_factory.rb +108 -108
  169. data/lib/page-object/page_populator.rb +92 -92
  170. data/lib/page-object/platforms.rb +18 -18
  171. data/lib/page-object/platforms/selenium_webdriver.rb +17 -17
  172. data/lib/page-object/platforms/selenium_webdriver/button.rb +14 -14
  173. data/lib/page-object/platforms/selenium_webdriver/check_box.rb +29 -29
  174. data/lib/page-object/platforms/selenium_webdriver/element.rb +291 -291
  175. data/lib/page-object/platforms/selenium_webdriver/file_field.rb +16 -16
  176. data/lib/page-object/platforms/selenium_webdriver/form.rb +16 -16
  177. data/lib/page-object/platforms/selenium_webdriver/image.rb +28 -28
  178. data/lib/page-object/platforms/selenium_webdriver/label.rb +17 -18
  179. data/lib/page-object/platforms/selenium_webdriver/link.rb +23 -23
  180. data/lib/page-object/platforms/selenium_webdriver/ordered_list.rb +39 -39
  181. data/lib/page-object/platforms/selenium_webdriver/page_object.rb +1136 -1136
  182. data/lib/page-object/platforms/selenium_webdriver/radio_button.rb +22 -22
  183. data/lib/page-object/platforms/selenium_webdriver/select_list.rb +93 -93
  184. data/lib/page-object/platforms/selenium_webdriver/surrogate_selenium_element.rb +42 -42
  185. data/lib/page-object/platforms/selenium_webdriver/table.rb +42 -42
  186. data/lib/page-object/platforms/selenium_webdriver/table_row.rb +43 -43
  187. data/lib/page-object/platforms/selenium_webdriver/text_area.rb +17 -17
  188. data/lib/page-object/platforms/selenium_webdriver/text_field.rb +17 -17
  189. data/lib/page-object/platforms/selenium_webdriver/unordered_list.rb +39 -39
  190. data/lib/page-object/platforms/watir_webdriver.rb +18 -18
  191. data/lib/page-object/platforms/watir_webdriver/check_box.rb +29 -29
  192. data/lib/page-object/platforms/watir_webdriver/element.rb +249 -249
  193. data/lib/page-object/platforms/watir_webdriver/file_field.rb +16 -16
  194. data/lib/page-object/platforms/watir_webdriver/form.rb +16 -16
  195. data/lib/page-object/platforms/watir_webdriver/image.rb +22 -22
  196. data/lib/page-object/platforms/watir_webdriver/label.rb +17 -18
  197. data/lib/page-object/platforms/watir_webdriver/link.rb +15 -15
  198. data/lib/page-object/platforms/watir_webdriver/ordered_list.rb +35 -35
  199. data/lib/page-object/platforms/watir_webdriver/page_object.rb +1029 -1029
  200. data/lib/page-object/platforms/watir_webdriver/radio_button.rb +22 -22
  201. data/lib/page-object/platforms/watir_webdriver/select_list.rb +74 -74
  202. data/lib/page-object/platforms/watir_webdriver/table.rb +38 -38
  203. data/lib/page-object/platforms/watir_webdriver/table_row.rb +37 -37
  204. data/lib/page-object/platforms/watir_webdriver/text_area.rb +23 -23
  205. data/lib/page-object/platforms/watir_webdriver/text_field.rb +16 -16
  206. data/lib/page-object/platforms/watir_webdriver/unordered_list.rb +36 -36
  207. data/lib/page-object/version.rb +4 -4
  208. data/lib/page-object/widgets.rb +133 -133
  209. data/meeane-page-object.gemspec +32 -32
  210. data/spec/page-object/element_locators_spec.rb +1065 -1065
  211. data/spec/page-object/elements/area_spec.rb +45 -45
  212. data/spec/page-object/elements/button_spec.rb +50 -50
  213. data/spec/page-object/elements/canvas_spec.rb +40 -40
  214. data/spec/page-object/elements/check_box_spec.rb +49 -49
  215. data/spec/page-object/elements/div_spec.rb +28 -28
  216. data/spec/page-object/elements/element_spec.rb +114 -114
  217. data/spec/page-object/elements/file_field_spec.rb +39 -39
  218. data/spec/page-object/elements/form_spec.rb +28 -28
  219. data/spec/page-object/elements/heading_spec.rb +48 -48
  220. data/spec/page-object/elements/hidden_field_spec.rb +28 -28
  221. data/spec/page-object/elements/image_spec.rb +66 -66
  222. data/spec/page-object/elements/label_spec.rb +29 -29
  223. data/spec/page-object/elements/link_spec.rb +49 -49
  224. data/spec/page-object/elements/list_item_spec.rb +28 -28
  225. data/spec/page-object/elements/nested_element_spec.rb +254 -254
  226. data/spec/page-object/elements/option_spec.rb +11 -11
  227. data/spec/page-object/elements/ordered_list_spec.rb +94 -94
  228. data/spec/page-object/elements/paragraph_spec.rb +28 -28
  229. data/spec/page-object/elements/select_list_spec.rb +142 -142
  230. data/spec/page-object/elements/selenium/radio_button_spec.rb +44 -44
  231. data/spec/page-object/elements/selenium/text_field_spec.rb +49 -49
  232. data/spec/page-object/elements/selenium_element_spec.rb +172 -172
  233. data/spec/page-object/elements/span_spec.rb +26 -26
  234. data/spec/page-object/elements/table_cell_spec.rb +21 -21
  235. data/spec/page-object/elements/table_row_spec.rb +70 -70
  236. data/spec/page-object/elements/table_spec.rb +98 -98
  237. data/spec/page-object/elements/text_area_spec.rb +39 -39
  238. data/spec/page-object/elements/unordered_list_spec.rb +95 -95
  239. data/spec/page-object/elements/watir_element_spec.rb +142 -142
  240. data/spec/page-object/javascript_framework_facade_spec.rb +61 -61
  241. data/spec/page-object/loads_platform_spec.rb +53 -53
  242. data/spec/page-object/page-object_spec.rb +405 -405
  243. data/spec/page-object/page_factory_spec.rb +256 -256
  244. data/spec/page-object/page_populator_spec.rb +122 -122
  245. data/spec/page-object/platforms/selenium_webdriver/selenium_page_object_spec.rb +68 -68
  246. data/spec/page-object/platforms/selenium_webdriver_spec.rb +28 -28
  247. data/spec/page-object/platforms/watir_webdriver/watir_page_object_spec.rb +29 -29
  248. data/spec/page-object/platforms/watir_webdriver_spec.rb +9 -9
  249. data/spec/page-object/selenium_accessors_spec.rb +589 -589
  250. data/spec/page-object/watir_accessors_spec.rb +1107 -1107
  251. data/spec/page-object/widget_spec.rb +226 -226
  252. data/spec/spec_helper.rb +44 -44
  253. metadata +193 -43
@@ -1,9 +1,9 @@
1
- require 'spec_helper'
2
-
3
- describe PageObject::Platforms::WatirWebDriver do
4
-
5
- it "should be in the PageObjects Adapters list" do
6
- PageObject::Platforms.get[:watir_webdriver].should be PageObject::Platforms::WatirWebDriver
7
- end
8
-
9
- end
1
+ require 'spec_helper'
2
+
3
+ describe PageObject::Platforms::WatirWebDriver do
4
+
5
+ it "should be in the PageObjects Adapters list" do
6
+ PageObject::Platforms.get[:watir_webdriver].should be PageObject::Platforms::WatirWebDriver
7
+ end
8
+
9
+ end
@@ -1,589 +1,589 @@
1
- require 'spec_helper'
2
-
3
- class SeleniumAccessorsTestPageObject
4
- include PageObject
5
-
6
- page_url "http://apple.com"
7
- expected_title "Expected Title"
8
- expected_element :google_search
9
- link(:google_search, :link => 'Google Search')
10
- text_field(:first_name, :id => 'first_name')
11
- hidden_field(:social_security_number, :id => 'ssn')
12
- text_area(:address, :id => 'address')
13
- select_list(:state, :id => 'state')
14
- checkbox(:active, :id => 'is_active_id')
15
- radio_button(:first, :id => 'first_choice')
16
- button(:click_me, :id => 'button_submit')
17
- div(:message, :id => 'message_id')
18
- table(:cart, :id => 'cart_id')
19
- cell(:total, :id => 'total')
20
- span(:alert_span, :id => 'alert_id')
21
- image(:logo, :id => 'logo')
22
- form(:login, :id => 'login')
23
- list_item(:item_one, :id => 'one')
24
- unordered_list(:menu, :id => 'main_menu')
25
- ordered_list(:top_five, :id => 'top')
26
- h1(:heading1, :id => 'main_heading')
27
- h2(:heading2, :id => 'main_heading')
28
- h3(:heading3, :id => 'main_heading')
29
- h4(:heading4, :id => 'main_heading')
30
- h5(:heading5, :id => 'main_heading')
31
- h6(:heading6, :id => 'main_heading')
32
- paragraph(:first_para, :id => 'first')
33
- file_field(:upload_me, :id => 'the_file')
34
- area(:img_area, :id => 'area')
35
- canvas(:my_canvas, :id => 'canvas')
36
- audio(:acdc, :id => 'audio_id')
37
- video(:movie, :id => 'movie_id')
38
- end
39
-
40
- class SeleniumBlockPageObject
41
- include PageObject
42
-
43
- attr_reader :value
44
-
45
- text_field :first_name do |element|
46
- "text_field"
47
- end
48
- hidden_field :secret do |element|
49
- "hidden_field"
50
- end
51
- text_area :address do |element|
52
- "text_area"
53
- end
54
- select_list :state do |element|
55
- "select_list"
56
- end
57
- link :continue do |element|
58
- "link"
59
- end
60
- checkbox :active do |element|
61
- "checkbox"
62
- end
63
- radio_button :first do |element|
64
- "radio_button"
65
- end
66
- button :click_me do |element|
67
- "button"
68
- end
69
- div :footer do |element|
70
- "div"
71
- end
72
- span :alert_span do |element|
73
- "span"
74
- end
75
- table :cart do |element|
76
- "table"
77
- end
78
- cell :total do |element|
79
- "cell"
80
- end
81
- image :logo do |element|
82
- "image"
83
- end
84
- form :login do |element|
85
- "form"
86
- end
87
- list_item :item_one do |element|
88
- "list_item"
89
- end
90
- unordered_list :menu do |element|
91
- "unordered_list"
92
- end
93
- ordered_list :top_five do |element|
94
- "ordered_list"
95
- end
96
- h1 :heading1 do |element|
97
- "h1"
98
- end
99
- h2 :heading2 do |element|
100
- "h2"
101
- end
102
- h3 :heading3 do |element|
103
- "h3"
104
- end
105
- h4 :heading4 do |element|
106
- "h4"
107
- end
108
- h5 :heading5 do |element|
109
- "h5"
110
- end
111
- h6 :heading6 do |element|
112
- "h6"
113
- end
114
- paragraph :first_para do |element|
115
- "p"
116
- end
117
- file_field :a_file do |element|
118
- "file_field"
119
- end
120
- area :img_area do |element|
121
- "area"
122
- end
123
- canvas :my_canvas do |element|
124
- "canvas"
125
- end
126
- audio :acdc do |element|
127
- 'audio'
128
- end
129
- video :movie do |element|
130
- 'video'
131
- end
132
- end
133
-
134
- describe PageObject::Accessors do
135
- let(:selenium_browser) { mock_selenium_browser }
136
- let(:selenium_page_object) { SeleniumAccessorsTestPageObject.new(selenium_browser) }
137
- let(:block_page_object) { SeleniumBlockPageObject.new(selenium_browser) }
138
-
139
- before(:each) do
140
- selenium_browser.stub(:switch_to).and_return(selenium_browser)
141
- selenium_browser.stub(:default_content)
142
- end
143
-
144
- describe "link accessors" do
145
- it "should select a link" do
146
- selenium_browser.stub_chain(:find_element, :click)
147
- selenium_page_object.google_search
148
- end
149
-
150
- it "should return a link element" do
151
- selenium_browser.should_receive(:find_element).and_return(selenium_browser)
152
- element = selenium_page_object.google_search_element
153
- element.should be_instance_of PageObject::Elements::Link
154
- end
155
- end
156
-
157
-
158
- describe "text_field accessors" do
159
- it "should get the text from the text field element" do
160
- selenium_browser.should_receive(:find_element).and_return(selenium_browser)
161
- selenium_browser.should_receive(:attribute).with('value').and_return('Katie')
162
- selenium_page_object.first_name.should == 'Katie'
163
- end
164
-
165
- it "should set some text on a text field element" do
166
- selenium_browser.should_receive(:find_element).twice.and_return(selenium_browser)
167
- selenium_browser.should_receive(:clear)
168
- selenium_browser.should_receive(:send_keys).with('Katie')
169
- selenium_page_object.first_name = 'Katie'
170
- end
171
-
172
- it "should retrieve a text field element" do
173
- selenium_browser.should_receive(:find_element).and_return(selenium_browser)
174
- element = selenium_page_object.first_name_element
175
- element.should be_instance_of PageObject::Elements::TextField
176
- end
177
- end
178
-
179
-
180
- describe "hidden field accessors" do
181
- it "should get the text from a hidden field" do
182
- selenium_browser.should_receive(:find_element).and_return(selenium_browser)
183
- selenium_browser.should_receive(:attribute).with('value').and_return("12345")
184
- selenium_page_object.social_security_number.should == "12345"
185
- end
186
-
187
- it "should retrieve a hidden field element" do
188
- selenium_browser.should_receive(:find_element).and_return(selenium_browser)
189
- element = selenium_page_object.social_security_number_element
190
- element.should be_instance_of PageObject::Elements::HiddenField
191
- end
192
- end
193
-
194
- describe "text area accessors" do
195
- it "should set some text on the text area" do
196
- selenium_browser.should_receive(:find_element).and_return(selenium_browser)
197
- selenium_browser.should_receive(:clear)
198
- selenium_browser.should_receive(:send_keys).with("123 main street")
199
- selenium_page_object.address = "123 main street"
200
- end
201
-
202
- it "should get the text from the text area" do
203
- selenium_browser.should_receive(:find_element).and_return(selenium_browser)
204
- selenium_browser.should_receive(:attribute).with('value').and_return("123 main street")
205
- selenium_page_object.address.should == "123 main street"
206
- end
207
-
208
- it "should retrieve a text area element" do
209
- selenium_browser.should_receive(:find_element).and_return(selenium_browser)
210
- element = selenium_page_object.address_element
211
- element.should be_instance_of PageObject::Elements::TextArea
212
- end
213
- end
214
-
215
- describe "select_list accessors" do
216
- it "should should get the current item from a select list" do
217
- selected = "OH"
218
- selected.should_receive(:selected?).and_return(selected)
219
- selected.should_receive(:text).and_return("OH")
220
- selenium_browser.should_receive(:find_element).and_return(selenium_browser)
221
- selenium_browser.should_receive(:find_elements).and_return([selected])
222
- selenium_page_object.state.should == "OH"
223
- end
224
-
225
- it "should set the current item of a select list" do
226
- option = double('option')
227
- selenium_browser.should_receive(:find_element).and_return(selenium_browser)
228
- selenium_browser.should_receive(:find_elements).and_return([option])
229
- option.should_receive(:text).and_return('OH')
230
- option.should_receive(:click)
231
- selenium_page_object.state = "OH"
232
- end
233
-
234
- it "should retrieve the select list element" do
235
- selenium_browser.should_receive(:find_element).and_return(selenium_browser)
236
- element = selenium_page_object.state_element
237
- element.should be_instance_of PageObject::Elements::SelectList
238
- end
239
-
240
- it "should return list of selection options" do
241
- option1 = double('option')
242
- option2 = double('option')
243
- option1.should_receive(:text).and_return("CA")
244
- option2.should_receive(:text).and_return("OH")
245
-
246
- select_element = double("select")
247
- select_element.should_receive(:options).twice.and_return([option1, option2])
248
- selenium_page_object.should_receive(:state_element).and_return(select_element)
249
-
250
- selenium_page_object.state_options.should == ["CA","OH"]
251
- end
252
-
253
- end
254
-
255
-
256
- describe "check_box accessors" do
257
- it "should check a check box element" do
258
- selenium_browser.should_receive(:find_element).twice.and_return(selenium_browser)
259
- selenium_browser.should_receive(:selected?).and_return(false)
260
- selenium_browser.should_receive(:click)
261
- selenium_page_object.check_active
262
- end
263
-
264
- it "should clear a check box element" do
265
- selenium_browser.should_receive(:find_element).twice.and_return(selenium_browser)
266
- selenium_browser.should_receive(:selected?).and_return(true)
267
- selenium_browser.should_receive(:click)
268
- selenium_page_object.uncheck_active
269
- end
270
-
271
- it "should know if a check box element is selected" do
272
- selenium_browser.should_receive(:find_element).and_return(selenium_browser)
273
- selenium_browser.should_receive(:selected?).and_return(true)
274
- selenium_page_object.active_checked?.should be true
275
- end
276
-
277
- it "should retrieve a checkbox element" do
278
- selenium_browser.should_receive(:find_element).and_return(selenium_browser)
279
- element = selenium_page_object.active_element
280
- element.should be_instance_of PageObject::Elements::CheckBox
281
- end
282
- end
283
-
284
-
285
- describe "radio accessors" do
286
- it "should select a radio button" do
287
- selenium_browser.should_receive(:find_element).twice.and_return(selenium_browser)
288
- selenium_browser.should_receive(:selected?).and_return(false)
289
- selenium_browser.should_receive(:click)
290
- selenium_page_object.select_first
291
- end
292
-
293
- it "should determine if a radio is selected" do
294
- selenium_browser.should_receive(:find_element).and_return(selenium_browser)
295
- selenium_browser.should_receive(:selected?).and_return(true)
296
- selenium_page_object.first_selected?
297
- end
298
-
299
- it "should retrieve a radio button element" do
300
- selenium_browser.should_receive(:find_element).and_return(selenium_browser)
301
- element = selenium_page_object.first_element
302
- element.should be_instance_of PageObject::Elements::RadioButton
303
- end
304
- end
305
-
306
- describe "button accessors" do
307
- it "should be able to click a button" do
308
- selenium_browser.should_receive(:find_element).and_return(selenium_browser)
309
- selenium_browser.should_receive(:click)
310
- selenium_page_object.click_me
311
- end
312
-
313
- it "should retrieve a button element" do
314
- selenium_browser.should_receive(:find_element).and_return(selenium_browser)
315
- element = selenium_page_object.click_me_element
316
- element.should be_instance_of PageObject::Elements::Button
317
- end
318
- end
319
-
320
- describe "div accessors" do
321
- it "should retrieve the text from a div" do
322
- selenium_browser.should_receive(:find_element).and_return(selenium_browser)
323
- selenium_browser.should_receive(:text).and_return("Message from div")
324
- selenium_page_object.message.should == "Message from div"
325
- end
326
-
327
- it "should retrieve the div element from the page" do
328
- selenium_browser.should_receive(:find_element).and_return(selenium_browser)
329
- element = selenium_page_object.message_element
330
- element.should be_instance_of PageObject::Elements::Div
331
- end
332
- end
333
-
334
- describe "span accessors" do
335
- it "should retrieve the text from a span" do
336
- selenium_browser.should_receive(:find_element).and_return(selenium_browser)
337
- selenium_browser.should_receive(:text).and_return("Alert")
338
- selenium_page_object.alert_span.should == "Alert"
339
- end
340
-
341
- it "should retrieve the span element from the page" do
342
- selenium_browser.should_receive(:find_element).and_return(selenium_browser)
343
- element = selenium_page_object.alert_span_element
344
- element.should be_instance_of PageObject::Elements::Span
345
- end
346
- end
347
-
348
- describe "table accessors" do
349
- it "should retrieve the table element from the page" do
350
- selenium_browser.should_receive(:find_element).and_return(selenium_browser)
351
- element = selenium_page_object.cart_element
352
- element.should be_instance_of(PageObject::Elements::Table)
353
- end
354
- end
355
-
356
- describe "table cell accessors" do
357
- it "should retrieve the text from the cell" do
358
- selenium_browser.should_receive(:find_element).and_return(selenium_browser)
359
- selenium_browser.should_receive(:text).and_return('celldata')
360
- selenium_page_object.total.should == 'celldata'
361
- end
362
-
363
- it "should retrieve the cell element from the page" do
364
- selenium_browser.should_receive(:find_element).and_return(selenium_browser)
365
- element = selenium_page_object.total_element
366
- element.should be_instance_of PageObject::Elements::TableCell
367
- end
368
- end
369
-
370
- describe "image accessors" do
371
- it "should retrieve the image element from the page" do
372
- selenium_browser.should_receive(:find_element).and_return(selenium_browser)
373
- element = selenium_page_object.logo_element
374
- element.should be_instance_of PageObject::Elements::Image
375
- end
376
- end
377
-
378
- describe "form accessors" do
379
- it "should retrieve the form element from the page" do
380
- selenium_browser.should_receive(:find_element).and_return(selenium_browser)
381
- element = selenium_page_object.login_element
382
- element.should be_instance_of PageObject::Elements::Form
383
- end
384
- end
385
-
386
- describe "list item accessors" do
387
- it "should retrieve the text from the list item" do
388
- selenium_browser.should_receive(:find_element).and_return(selenium_browser)
389
- selenium_browser.should_receive(:text).and_return("value")
390
- selenium_page_object.item_one.should == "value"
391
- end
392
-
393
- it "should retrieve the list item from the page" do
394
- selenium_browser.should_receive(:find_element).and_return(selenium_browser)
395
- element = selenium_page_object.item_one_element
396
- element.should be_instance_of PageObject::Elements::ListItem
397
- end
398
- end
399
-
400
- describe "unordered list accessors" do
401
- it "should retrieve the element from the page" do
402
- selenium_browser.should_receive(:find_element).and_return(selenium_browser)
403
- element = selenium_page_object.menu_element
404
- element.should be_instance_of PageObject::Elements::UnorderedList
405
- end
406
- end
407
-
408
- describe "ordered list accessors" do
409
- it "should retrieve the element from the page" do
410
- selenium_browser.should_receive(:find_element).and_return(selenium_browser)
411
- element = selenium_page_object.top_five_element
412
- element.should be_instance_of PageObject::Elements::OrderedList
413
- end
414
- end
415
-
416
- describe "h1 accessors" do
417
- it "should retrieve the text from the h1" do
418
- selenium_browser.should_receive(:find_element).and_return(selenium_browser)
419
- selenium_browser.should_receive(:text).and_return("value")
420
- selenium_page_object.heading1.should == "value"
421
- end
422
-
423
- it "should retrieve the element from the page" do
424
- selenium_browser.should_receive(:find_element).and_return(selenium_browser)
425
- element = selenium_page_object.heading1_element
426
- element.should be_instance_of PageObject::Elements::Heading
427
- end
428
- end
429
-
430
- describe "h2 accessors" do
431
- it "should retrieve the text from the h2" do
432
- selenium_browser.should_receive(:find_element).and_return(selenium_browser)
433
- selenium_browser.should_receive(:text).and_return("value")
434
- selenium_page_object.heading2.should == "value"
435
- end
436
-
437
- it "should retrieve the element from the page" do
438
- selenium_browser.should_receive(:find_element).and_return(selenium_browser)
439
- element = selenium_page_object.heading2_element
440
- element.should be_instance_of PageObject::Elements::Heading
441
- end
442
- end
443
-
444
- describe "h3 accessors" do
445
- it "should retrieve the text from the h3" do
446
- selenium_browser.should_receive(:find_element).and_return(selenium_browser)
447
- selenium_browser.should_receive(:text).and_return("value")
448
- selenium_page_object.heading3.should == "value"
449
- end
450
-
451
- it "should retrieve the element from the page" do
452
- selenium_browser.should_receive(:find_element).and_return(selenium_browser)
453
- element = selenium_page_object.heading3_element
454
- element.should be_instance_of PageObject::Elements::Heading
455
- end
456
- end
457
-
458
- describe "h4 accessors" do
459
- it "should retrieve the text from the h4" do
460
- selenium_browser.should_receive(:find_element).and_return(selenium_browser)
461
- selenium_browser.should_receive(:text).and_return("value")
462
- selenium_page_object.heading4.should == "value"
463
- end
464
-
465
- it "should retrieve the element from the page" do
466
- selenium_browser.should_receive(:find_element).and_return(selenium_browser)
467
- element = selenium_page_object.heading4_element
468
- element.should be_instance_of PageObject::Elements::Heading
469
- end
470
- end
471
-
472
- describe "h5 accessors" do
473
- it "should retrieve the text from the h5" do
474
- selenium_browser.should_receive(:find_element).and_return(selenium_browser)
475
- selenium_browser.should_receive(:text).and_return("value")
476
- selenium_page_object.heading5.should == "value"
477
- end
478
-
479
- it "should retrieve the element from the page" do
480
- selenium_browser.should_receive(:find_element).and_return(selenium_browser)
481
- element = selenium_page_object.heading5_element
482
- element.should be_instance_of PageObject::Elements::Heading
483
- end
484
- end
485
-
486
- describe "h6 accessors" do
487
- it "should retrieve the text from the h6" do
488
- selenium_browser.should_receive(:find_element).and_return(selenium_browser)
489
- selenium_browser.should_receive(:text).and_return("value")
490
- selenium_page_object.heading6.should == "value"
491
- end
492
-
493
- it "should retrieve the element from the page" do
494
- selenium_browser.should_receive(:find_element).and_return(selenium_browser)
495
- element = selenium_page_object.heading6_element
496
- element.should be_instance_of PageObject::Elements::Heading
497
- end
498
- end
499
-
500
-
501
- describe "p accessors" do
502
- it "should retrieve the text from the p" do
503
- selenium_browser.should_receive(:find_element).and_return(selenium_browser)
504
- selenium_browser.should_receive(:text).and_return("value")
505
- selenium_page_object.first_para.should == "value"
506
- end
507
-
508
- it "should retrieve the element from the page" do
509
- selenium_browser.should_receive(:find_element).and_return(selenium_browser)
510
- element = selenium_page_object.first_para_element
511
- element.should be_instance_of PageObject::Elements::Paragraph
512
- end
513
- end
514
-
515
- describe "file_field accessors" do
516
- it "should set the file name" do
517
- selenium_browser.should_receive(:find_element).and_return(selenium_browser)
518
- selenium_browser.should_receive(:send_keys).with('some_file')
519
- selenium_page_object.upload_me = 'some_file'
520
- end
521
-
522
- it "should retrieve a file_field element" do
523
- selenium_browser.should_receive(:find_element).and_return(selenium_browser)
524
- element = selenium_page_object.upload_me_element
525
- element.should be_instance_of PageObject::Elements::FileField
526
- end
527
- end
528
-
529
- describe "area accessors" do
530
- context "when called on a page object" do
531
- it "should generate accessor methods" do
532
- selenium_page_object.should respond_to(:img_area)
533
- selenium_page_object.should respond_to(:img_area_element)
534
- end
535
-
536
- it "should call a block on the element method when present" do
537
- block_page_object.img_area_element.should == "area"
538
- end
539
- end
540
-
541
- it "should click on the area" do
542
- selenium_browser.should_receive(:find_element).and_return(selenium_browser)
543
- selenium_browser.should_receive(:click)
544
- selenium_page_object.img_area
545
- end
546
-
547
- it "should retrieve the element from the page" do
548
- selenium_browser.should_receive(:find_element).and_return(selenium_browser)
549
- element = selenium_page_object.img_area_element
550
- element.should be_instance_of PageObject::Elements::Area
551
- end
552
- end
553
-
554
- describe "canvas accessors" do
555
- context "when called on a page object" do
556
- it "should generate accessor methods" do
557
- selenium_page_object.should respond_to(:my_canvas_element)
558
- end
559
-
560
- it "should call a block on the element method when present" do
561
- block_page_object.my_canvas_element.should == "canvas"
562
- end
563
- end
564
- end
565
-
566
- describe "audio accessors" do
567
- context "when called on a page object" do
568
- it "should generate accessor methods" do
569
- selenium_page_object.should respond_to(:acdc_element)
570
- end
571
-
572
- it "should call a block on the element method when present" do
573
- block_page_object.acdc_element.should == "audio"
574
- end
575
- end
576
- end
577
-
578
- describe "video accessors" do
579
- context "when called on a page object" do
580
- it "should generate accessor methods" do
581
- selenium_page_object.should respond_to(:movie_element)
582
- end
583
-
584
- it "should call a block on the elmenet method when present" do
585
- block_page_object.movie_element.should == "video"
586
- end
587
- end
588
- end
589
- end
1
+ require 'spec_helper'
2
+
3
+ class SeleniumAccessorsTestPageObject
4
+ include PageObject
5
+
6
+ page_url "http://apple.com"
7
+ expected_title "Expected Title"
8
+ expected_element :google_search
9
+ link(:google_search, :link => 'Google Search')
10
+ text_field(:first_name, :id => 'first_name')
11
+ hidden_field(:social_security_number, :id => 'ssn')
12
+ text_area(:address, :id => 'address')
13
+ select_list(:state, :id => 'state')
14
+ checkbox(:active, :id => 'is_active_id')
15
+ radio_button(:first, :id => 'first_choice')
16
+ button(:click_me, :id => 'button_submit')
17
+ div(:message, :id => 'message_id')
18
+ table(:cart, :id => 'cart_id')
19
+ cell(:total, :id => 'total')
20
+ span(:alert_span, :id => 'alert_id')
21
+ image(:logo, :id => 'logo')
22
+ form(:login, :id => 'login')
23
+ list_item(:item_one, :id => 'one')
24
+ unordered_list(:menu, :id => 'main_menu')
25
+ ordered_list(:top_five, :id => 'top')
26
+ h1(:heading1, :id => 'main_heading')
27
+ h2(:heading2, :id => 'main_heading')
28
+ h3(:heading3, :id => 'main_heading')
29
+ h4(:heading4, :id => 'main_heading')
30
+ h5(:heading5, :id => 'main_heading')
31
+ h6(:heading6, :id => 'main_heading')
32
+ paragraph(:first_para, :id => 'first')
33
+ file_field(:upload_me, :id => 'the_file')
34
+ area(:img_area, :id => 'area')
35
+ canvas(:my_canvas, :id => 'canvas')
36
+ audio(:acdc, :id => 'audio_id')
37
+ video(:movie, :id => 'movie_id')
38
+ end
39
+
40
+ class SeleniumBlockPageObject
41
+ include PageObject
42
+
43
+ attr_reader :value
44
+
45
+ text_field :first_name do |element|
46
+ "text_field"
47
+ end
48
+ hidden_field :secret do |element|
49
+ "hidden_field"
50
+ end
51
+ text_area :address do |element|
52
+ "text_area"
53
+ end
54
+ select_list :state do |element|
55
+ "select_list"
56
+ end
57
+ link :continue do |element|
58
+ "link"
59
+ end
60
+ checkbox :active do |element|
61
+ "checkbox"
62
+ end
63
+ radio_button :first do |element|
64
+ "radio_button"
65
+ end
66
+ button :click_me do |element|
67
+ "button"
68
+ end
69
+ div :footer do |element|
70
+ "div"
71
+ end
72
+ span :alert_span do |element|
73
+ "span"
74
+ end
75
+ table :cart do |element|
76
+ "table"
77
+ end
78
+ cell :total do |element|
79
+ "cell"
80
+ end
81
+ image :logo do |element|
82
+ "image"
83
+ end
84
+ form :login do |element|
85
+ "form"
86
+ end
87
+ list_item :item_one do |element|
88
+ "list_item"
89
+ end
90
+ unordered_list :menu do |element|
91
+ "unordered_list"
92
+ end
93
+ ordered_list :top_five do |element|
94
+ "ordered_list"
95
+ end
96
+ h1 :heading1 do |element|
97
+ "h1"
98
+ end
99
+ h2 :heading2 do |element|
100
+ "h2"
101
+ end
102
+ h3 :heading3 do |element|
103
+ "h3"
104
+ end
105
+ h4 :heading4 do |element|
106
+ "h4"
107
+ end
108
+ h5 :heading5 do |element|
109
+ "h5"
110
+ end
111
+ h6 :heading6 do |element|
112
+ "h6"
113
+ end
114
+ paragraph :first_para do |element|
115
+ "p"
116
+ end
117
+ file_field :a_file do |element|
118
+ "file_field"
119
+ end
120
+ area :img_area do |element|
121
+ "area"
122
+ end
123
+ canvas :my_canvas do |element|
124
+ "canvas"
125
+ end
126
+ audio :acdc do |element|
127
+ 'audio'
128
+ end
129
+ video :movie do |element|
130
+ 'video'
131
+ end
132
+ end
133
+
134
+ describe PageObject::Accessors do
135
+ let(:selenium_browser) { mock_selenium_browser }
136
+ let(:selenium_page_object) { SeleniumAccessorsTestPageObject.new(selenium_browser) }
137
+ let(:block_page_object) { SeleniumBlockPageObject.new(selenium_browser) }
138
+
139
+ before(:each) do
140
+ selenium_browser.stub(:switch_to).and_return(selenium_browser)
141
+ selenium_browser.stub(:default_content)
142
+ end
143
+
144
+ describe "link accessors" do
145
+ it "should select a link" do
146
+ selenium_browser.stub_chain(:find_element, :click)
147
+ selenium_page_object.google_search
148
+ end
149
+
150
+ it "should return a link element" do
151
+ selenium_browser.should_receive(:find_element).and_return(selenium_browser)
152
+ element = selenium_page_object.google_search_element
153
+ element.should be_instance_of PageObject::Elements::Link
154
+ end
155
+ end
156
+
157
+
158
+ describe "text_field accessors" do
159
+ it "should get the text from the text field element" do
160
+ selenium_browser.should_receive(:find_element).and_return(selenium_browser)
161
+ selenium_browser.should_receive(:attribute).with('value').and_return('Katie')
162
+ selenium_page_object.first_name.should == 'Katie'
163
+ end
164
+
165
+ it "should set some text on a text field element" do
166
+ selenium_browser.should_receive(:find_element).twice.and_return(selenium_browser)
167
+ selenium_browser.should_receive(:clear)
168
+ selenium_browser.should_receive(:send_keys).with('Katie')
169
+ selenium_page_object.first_name = 'Katie'
170
+ end
171
+
172
+ it "should retrieve a text field element" do
173
+ selenium_browser.should_receive(:find_element).and_return(selenium_browser)
174
+ element = selenium_page_object.first_name_element
175
+ element.should be_instance_of PageObject::Elements::TextField
176
+ end
177
+ end
178
+
179
+
180
+ describe "hidden field accessors" do
181
+ it "should get the text from a hidden field" do
182
+ selenium_browser.should_receive(:find_element).and_return(selenium_browser)
183
+ selenium_browser.should_receive(:attribute).with('value').and_return("12345")
184
+ selenium_page_object.social_security_number.should == "12345"
185
+ end
186
+
187
+ it "should retrieve a hidden field element" do
188
+ selenium_browser.should_receive(:find_element).and_return(selenium_browser)
189
+ element = selenium_page_object.social_security_number_element
190
+ element.should be_instance_of PageObject::Elements::HiddenField
191
+ end
192
+ end
193
+
194
+ describe "text area accessors" do
195
+ it "should set some text on the text area" do
196
+ selenium_browser.should_receive(:find_element).and_return(selenium_browser)
197
+ selenium_browser.should_receive(:clear)
198
+ selenium_browser.should_receive(:send_keys).with("123 main street")
199
+ selenium_page_object.address = "123 main street"
200
+ end
201
+
202
+ it "should get the text from the text area" do
203
+ selenium_browser.should_receive(:find_element).and_return(selenium_browser)
204
+ selenium_browser.should_receive(:attribute).with('value').and_return("123 main street")
205
+ selenium_page_object.address.should == "123 main street"
206
+ end
207
+
208
+ it "should retrieve a text area element" do
209
+ selenium_browser.should_receive(:find_element).and_return(selenium_browser)
210
+ element = selenium_page_object.address_element
211
+ element.should be_instance_of PageObject::Elements::TextArea
212
+ end
213
+ end
214
+
215
+ describe "select_list accessors" do
216
+ it "should should get the current item from a select list" do
217
+ selected = "OH"
218
+ selected.should_receive(:selected?).and_return(selected)
219
+ selected.should_receive(:text).and_return("OH")
220
+ selenium_browser.should_receive(:find_element).and_return(selenium_browser)
221
+ selenium_browser.should_receive(:find_elements).and_return([selected])
222
+ selenium_page_object.state.should == "OH"
223
+ end
224
+
225
+ it "should set the current item of a select list" do
226
+ option = double('option')
227
+ selenium_browser.should_receive(:find_element).and_return(selenium_browser)
228
+ selenium_browser.should_receive(:find_elements).and_return([option])
229
+ option.should_receive(:text).and_return('OH')
230
+ option.should_receive(:click)
231
+ selenium_page_object.state = "OH"
232
+ end
233
+
234
+ it "should retrieve the select list element" do
235
+ selenium_browser.should_receive(:find_element).and_return(selenium_browser)
236
+ element = selenium_page_object.state_element
237
+ element.should be_instance_of PageObject::Elements::SelectList
238
+ end
239
+
240
+ it "should return list of selection options" do
241
+ option1 = double('option')
242
+ option2 = double('option')
243
+ option1.should_receive(:text).and_return("CA")
244
+ option2.should_receive(:text).and_return("OH")
245
+
246
+ select_element = double("select")
247
+ select_element.should_receive(:options).twice.and_return([option1, option2])
248
+ selenium_page_object.should_receive(:state_element).and_return(select_element)
249
+
250
+ selenium_page_object.state_options.should == ["CA","OH"]
251
+ end
252
+
253
+ end
254
+
255
+
256
+ describe "check_box accessors" do
257
+ it "should check a check box element" do
258
+ selenium_browser.should_receive(:find_element).twice.and_return(selenium_browser)
259
+ selenium_browser.should_receive(:selected?).and_return(false)
260
+ selenium_browser.should_receive(:click)
261
+ selenium_page_object.check_active
262
+ end
263
+
264
+ it "should clear a check box element" do
265
+ selenium_browser.should_receive(:find_element).twice.and_return(selenium_browser)
266
+ selenium_browser.should_receive(:selected?).and_return(true)
267
+ selenium_browser.should_receive(:click)
268
+ selenium_page_object.uncheck_active
269
+ end
270
+
271
+ it "should know if a check box element is selected" do
272
+ selenium_browser.should_receive(:find_element).and_return(selenium_browser)
273
+ selenium_browser.should_receive(:selected?).and_return(true)
274
+ selenium_page_object.active_checked?.should be true
275
+ end
276
+
277
+ it "should retrieve a checkbox element" do
278
+ selenium_browser.should_receive(:find_element).and_return(selenium_browser)
279
+ element = selenium_page_object.active_element
280
+ element.should be_instance_of PageObject::Elements::CheckBox
281
+ end
282
+ end
283
+
284
+
285
+ describe "radio accessors" do
286
+ it "should select a radio button" do
287
+ selenium_browser.should_receive(:find_element).twice.and_return(selenium_browser)
288
+ selenium_browser.should_receive(:selected?).and_return(false)
289
+ selenium_browser.should_receive(:click)
290
+ selenium_page_object.select_first
291
+ end
292
+
293
+ it "should determine if a radio is selected" do
294
+ selenium_browser.should_receive(:find_element).and_return(selenium_browser)
295
+ selenium_browser.should_receive(:selected?).and_return(true)
296
+ selenium_page_object.first_selected?
297
+ end
298
+
299
+ it "should retrieve a radio button element" do
300
+ selenium_browser.should_receive(:find_element).and_return(selenium_browser)
301
+ element = selenium_page_object.first_element
302
+ element.should be_instance_of PageObject::Elements::RadioButton
303
+ end
304
+ end
305
+
306
+ describe "button accessors" do
307
+ it "should be able to click a button" do
308
+ selenium_browser.should_receive(:find_element).and_return(selenium_browser)
309
+ selenium_browser.should_receive(:click)
310
+ selenium_page_object.click_me
311
+ end
312
+
313
+ it "should retrieve a button element" do
314
+ selenium_browser.should_receive(:find_element).and_return(selenium_browser)
315
+ element = selenium_page_object.click_me_element
316
+ element.should be_instance_of PageObject::Elements::Button
317
+ end
318
+ end
319
+
320
+ describe "div accessors" do
321
+ it "should retrieve the text from a div" do
322
+ selenium_browser.should_receive(:find_element).and_return(selenium_browser)
323
+ selenium_browser.should_receive(:text).and_return("Message from div")
324
+ selenium_page_object.message.should == "Message from div"
325
+ end
326
+
327
+ it "should retrieve the div element from the page" do
328
+ selenium_browser.should_receive(:find_element).and_return(selenium_browser)
329
+ element = selenium_page_object.message_element
330
+ element.should be_instance_of PageObject::Elements::Div
331
+ end
332
+ end
333
+
334
+ describe "span accessors" do
335
+ it "should retrieve the text from a span" do
336
+ selenium_browser.should_receive(:find_element).and_return(selenium_browser)
337
+ selenium_browser.should_receive(:text).and_return("Alert")
338
+ selenium_page_object.alert_span.should == "Alert"
339
+ end
340
+
341
+ it "should retrieve the span element from the page" do
342
+ selenium_browser.should_receive(:find_element).and_return(selenium_browser)
343
+ element = selenium_page_object.alert_span_element
344
+ element.should be_instance_of PageObject::Elements::Span
345
+ end
346
+ end
347
+
348
+ describe "table accessors" do
349
+ it "should retrieve the table element from the page" do
350
+ selenium_browser.should_receive(:find_element).and_return(selenium_browser)
351
+ element = selenium_page_object.cart_element
352
+ element.should be_instance_of(PageObject::Elements::Table)
353
+ end
354
+ end
355
+
356
+ describe "table cell accessors" do
357
+ it "should retrieve the text from the cell" do
358
+ selenium_browser.should_receive(:find_element).and_return(selenium_browser)
359
+ selenium_browser.should_receive(:text).and_return('celldata')
360
+ selenium_page_object.total.should == 'celldata'
361
+ end
362
+
363
+ it "should retrieve the cell element from the page" do
364
+ selenium_browser.should_receive(:find_element).and_return(selenium_browser)
365
+ element = selenium_page_object.total_element
366
+ element.should be_instance_of PageObject::Elements::TableCell
367
+ end
368
+ end
369
+
370
+ describe "image accessors" do
371
+ it "should retrieve the image element from the page" do
372
+ selenium_browser.should_receive(:find_element).and_return(selenium_browser)
373
+ element = selenium_page_object.logo_element
374
+ element.should be_instance_of PageObject::Elements::Image
375
+ end
376
+ end
377
+
378
+ describe "form accessors" do
379
+ it "should retrieve the form element from the page" do
380
+ selenium_browser.should_receive(:find_element).and_return(selenium_browser)
381
+ element = selenium_page_object.login_element
382
+ element.should be_instance_of PageObject::Elements::Form
383
+ end
384
+ end
385
+
386
+ describe "list item accessors" do
387
+ it "should retrieve the text from the list item" do
388
+ selenium_browser.should_receive(:find_element).and_return(selenium_browser)
389
+ selenium_browser.should_receive(:text).and_return("value")
390
+ selenium_page_object.item_one.should == "value"
391
+ end
392
+
393
+ it "should retrieve the list item from the page" do
394
+ selenium_browser.should_receive(:find_element).and_return(selenium_browser)
395
+ element = selenium_page_object.item_one_element
396
+ element.should be_instance_of PageObject::Elements::ListItem
397
+ end
398
+ end
399
+
400
+ describe "unordered list accessors" do
401
+ it "should retrieve the element from the page" do
402
+ selenium_browser.should_receive(:find_element).and_return(selenium_browser)
403
+ element = selenium_page_object.menu_element
404
+ element.should be_instance_of PageObject::Elements::UnorderedList
405
+ end
406
+ end
407
+
408
+ describe "ordered list accessors" do
409
+ it "should retrieve the element from the page" do
410
+ selenium_browser.should_receive(:find_element).and_return(selenium_browser)
411
+ element = selenium_page_object.top_five_element
412
+ element.should be_instance_of PageObject::Elements::OrderedList
413
+ end
414
+ end
415
+
416
+ describe "h1 accessors" do
417
+ it "should retrieve the text from the h1" do
418
+ selenium_browser.should_receive(:find_element).and_return(selenium_browser)
419
+ selenium_browser.should_receive(:text).and_return("value")
420
+ selenium_page_object.heading1.should == "value"
421
+ end
422
+
423
+ it "should retrieve the element from the page" do
424
+ selenium_browser.should_receive(:find_element).and_return(selenium_browser)
425
+ element = selenium_page_object.heading1_element
426
+ element.should be_instance_of PageObject::Elements::Heading
427
+ end
428
+ end
429
+
430
+ describe "h2 accessors" do
431
+ it "should retrieve the text from the h2" do
432
+ selenium_browser.should_receive(:find_element).and_return(selenium_browser)
433
+ selenium_browser.should_receive(:text).and_return("value")
434
+ selenium_page_object.heading2.should == "value"
435
+ end
436
+
437
+ it "should retrieve the element from the page" do
438
+ selenium_browser.should_receive(:find_element).and_return(selenium_browser)
439
+ element = selenium_page_object.heading2_element
440
+ element.should be_instance_of PageObject::Elements::Heading
441
+ end
442
+ end
443
+
444
+ describe "h3 accessors" do
445
+ it "should retrieve the text from the h3" do
446
+ selenium_browser.should_receive(:find_element).and_return(selenium_browser)
447
+ selenium_browser.should_receive(:text).and_return("value")
448
+ selenium_page_object.heading3.should == "value"
449
+ end
450
+
451
+ it "should retrieve the element from the page" do
452
+ selenium_browser.should_receive(:find_element).and_return(selenium_browser)
453
+ element = selenium_page_object.heading3_element
454
+ element.should be_instance_of PageObject::Elements::Heading
455
+ end
456
+ end
457
+
458
+ describe "h4 accessors" do
459
+ it "should retrieve the text from the h4" do
460
+ selenium_browser.should_receive(:find_element).and_return(selenium_browser)
461
+ selenium_browser.should_receive(:text).and_return("value")
462
+ selenium_page_object.heading4.should == "value"
463
+ end
464
+
465
+ it "should retrieve the element from the page" do
466
+ selenium_browser.should_receive(:find_element).and_return(selenium_browser)
467
+ element = selenium_page_object.heading4_element
468
+ element.should be_instance_of PageObject::Elements::Heading
469
+ end
470
+ end
471
+
472
+ describe "h5 accessors" do
473
+ it "should retrieve the text from the h5" do
474
+ selenium_browser.should_receive(:find_element).and_return(selenium_browser)
475
+ selenium_browser.should_receive(:text).and_return("value")
476
+ selenium_page_object.heading5.should == "value"
477
+ end
478
+
479
+ it "should retrieve the element from the page" do
480
+ selenium_browser.should_receive(:find_element).and_return(selenium_browser)
481
+ element = selenium_page_object.heading5_element
482
+ element.should be_instance_of PageObject::Elements::Heading
483
+ end
484
+ end
485
+
486
+ describe "h6 accessors" do
487
+ it "should retrieve the text from the h6" do
488
+ selenium_browser.should_receive(:find_element).and_return(selenium_browser)
489
+ selenium_browser.should_receive(:text).and_return("value")
490
+ selenium_page_object.heading6.should == "value"
491
+ end
492
+
493
+ it "should retrieve the element from the page" do
494
+ selenium_browser.should_receive(:find_element).and_return(selenium_browser)
495
+ element = selenium_page_object.heading6_element
496
+ element.should be_instance_of PageObject::Elements::Heading
497
+ end
498
+ end
499
+
500
+
501
+ describe "p accessors" do
502
+ it "should retrieve the text from the p" do
503
+ selenium_browser.should_receive(:find_element).and_return(selenium_browser)
504
+ selenium_browser.should_receive(:text).and_return("value")
505
+ selenium_page_object.first_para.should == "value"
506
+ end
507
+
508
+ it "should retrieve the element from the page" do
509
+ selenium_browser.should_receive(:find_element).and_return(selenium_browser)
510
+ element = selenium_page_object.first_para_element
511
+ element.should be_instance_of PageObject::Elements::Paragraph
512
+ end
513
+ end
514
+
515
+ describe "file_field accessors" do
516
+ it "should set the file name" do
517
+ selenium_browser.should_receive(:find_element).and_return(selenium_browser)
518
+ selenium_browser.should_receive(:send_keys).with('some_file')
519
+ selenium_page_object.upload_me = 'some_file'
520
+ end
521
+
522
+ it "should retrieve a file_field element" do
523
+ selenium_browser.should_receive(:find_element).and_return(selenium_browser)
524
+ element = selenium_page_object.upload_me_element
525
+ element.should be_instance_of PageObject::Elements::FileField
526
+ end
527
+ end
528
+
529
+ describe "area accessors" do
530
+ context "when called on a page object" do
531
+ it "should generate accessor methods" do
532
+ selenium_page_object.should respond_to(:img_area)
533
+ selenium_page_object.should respond_to(:img_area_element)
534
+ end
535
+
536
+ it "should call a block on the element method when present" do
537
+ block_page_object.img_area_element.should == "area"
538
+ end
539
+ end
540
+
541
+ it "should click on the area" do
542
+ selenium_browser.should_receive(:find_element).and_return(selenium_browser)
543
+ selenium_browser.should_receive(:click)
544
+ selenium_page_object.img_area
545
+ end
546
+
547
+ it "should retrieve the element from the page" do
548
+ selenium_browser.should_receive(:find_element).and_return(selenium_browser)
549
+ element = selenium_page_object.img_area_element
550
+ element.should be_instance_of PageObject::Elements::Area
551
+ end
552
+ end
553
+
554
+ describe "canvas accessors" do
555
+ context "when called on a page object" do
556
+ it "should generate accessor methods" do
557
+ selenium_page_object.should respond_to(:my_canvas_element)
558
+ end
559
+
560
+ it "should call a block on the element method when present" do
561
+ block_page_object.my_canvas_element.should == "canvas"
562
+ end
563
+ end
564
+ end
565
+
566
+ describe "audio accessors" do
567
+ context "when called on a page object" do
568
+ it "should generate accessor methods" do
569
+ selenium_page_object.should respond_to(:acdc_element)
570
+ end
571
+
572
+ it "should call a block on the element method when present" do
573
+ block_page_object.acdc_element.should == "audio"
574
+ end
575
+ end
576
+ end
577
+
578
+ describe "video accessors" do
579
+ context "when called on a page object" do
580
+ it "should generate accessor methods" do
581
+ selenium_page_object.should respond_to(:movie_element)
582
+ end
583
+
584
+ it "should call a block on the elmenet method when present" do
585
+ block_page_object.movie_element.should == "video"
586
+ end
587
+ end
588
+ end
589
+ end