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,38 @@
1
+
2
+ module PageObject
3
+ module Elements
4
+ class FileField < Element
5
+
6
+ def initialize(element, platform)
7
+ @element = element
8
+ include_platform_for platform
9
+ end
10
+
11
+ protected
12
+
13
+ def self.watir_finders
14
+ super + [:title, :label]
15
+ end
16
+
17
+ def self.selenium_finders
18
+ super + [:title, :label]
19
+ end
20
+
21
+ def include_platform_for platform
22
+ super
23
+ if platform[:platform] == :watir_webdriver
24
+ require 'page-object/platforms/watir_webdriver/file_field'
25
+ self.class.send :include, PageObject::Platforms::WatirWebDriver::FileField
26
+ elsif platform[:platform] == :selenium_webdriver
27
+ require 'page-object/platforms/selenium_webdriver/file_field'
28
+ self.class.send :include, PageObject::Platforms::SeleniumWebDriver::FileField
29
+ else
30
+ raise ArgumentError, "expect platform to be :watir_webdriver or :selenium_webdriver"
31
+ end
32
+ end
33
+ end
34
+
35
+ ::PageObject::Elements.type_to_class[:file] = ::PageObject::Elements::FileField
36
+
37
+ end
38
+ end
@@ -0,0 +1,36 @@
1
+
2
+ module PageObject
3
+ module Elements
4
+ class Form < Element
5
+ def initialize(element, platform)
6
+ @element = element
7
+ include_platform_for platform
8
+ end
9
+
10
+ protected
11
+
12
+ def self.watir_finders
13
+ super + [:action]
14
+ end
15
+
16
+ def self.selenium_finders
17
+ super + [:action]
18
+ end
19
+
20
+ def include_platform_for platform
21
+ super
22
+ if platform[:platform] == :watir_webdriver
23
+ require 'page-object/platforms/watir_webdriver/form'
24
+ self.class.send :include, PageObject::Platforms::WatirWebDriver::Form
25
+ elsif platform[:platform] == :selenium_webdriver
26
+ require 'page-object/platforms/selenium_webdriver/form'
27
+ self.class.send :include, PageObject::Platforms::SeleniumWebDriver::Form
28
+ else
29
+ raise ArgumentError, "expect platform to be :watir_webdriver or :selenium_webdriver"
30
+ end
31
+ end
32
+ end
33
+
34
+ ::PageObject::Elements.tag_to_class[:form] = ::PageObject::Elements::Form
35
+ end
36
+ end
@@ -0,0 +1,15 @@
1
+ module PageObject
2
+ module Elements
3
+ class Heading < Element
4
+
5
+ end
6
+
7
+ ::PageObject::Elements.tag_to_class[:h1] = ::PageObject::Elements::Heading
8
+ ::PageObject::Elements.tag_to_class[:h2] = ::PageObject::Elements::Heading
9
+ ::PageObject::Elements.tag_to_class[:h3] = ::PageObject::Elements::Heading
10
+ ::PageObject::Elements.tag_to_class[:h4] = ::PageObject::Elements::Heading
11
+ ::PageObject::Elements.tag_to_class[:h5] = ::PageObject::Elements::Heading
12
+ ::PageObject::Elements.tag_to_class[:h6] = ::PageObject::Elements::Heading
13
+
14
+ end
15
+ end
@@ -0,0 +1,22 @@
1
+ module PageObject
2
+ module Elements
3
+ class HiddenField < Element
4
+
5
+ def click
6
+ raise "click is not available on hidden field element with Selenium or Watir"
7
+ end
8
+
9
+ protected
10
+
11
+ def self.watir_finders
12
+ super + [:text, :value]
13
+ end
14
+
15
+ def self.selenium_finders
16
+ super + [:value]
17
+ end
18
+ end
19
+
20
+ ::PageObject::Elements.type_to_class[:hidden] = ::PageObject::Elements::HiddenField
21
+ end
22
+ end
@@ -0,0 +1,36 @@
1
+ module PageObject
2
+ module Elements
3
+ class Image < Element
4
+ def initialize(element, platform)
5
+ @element = element
6
+ include_platform_for platform
7
+ end
8
+
9
+ protected
10
+
11
+ def self.watir_finders
12
+ super + [:alt, :src]
13
+ end
14
+
15
+ def self.selenium_finders
16
+ super + [:alt, :src, :css]
17
+ end
18
+
19
+ def include_platform_for platform
20
+ super
21
+ if platform[:platform] == :watir_webdriver
22
+ require 'page-object/platforms/watir_webdriver/image'
23
+ self.class.send :include, PageObject::Platforms::WatirWebDriver::Image
24
+ elsif platform[:platform] == :selenium_webdriver
25
+ require 'page-object/platforms/selenium_webdriver/image'
26
+ self.class.send :include, PageObject::Platforms::SeleniumWebDriver::Image
27
+ else
28
+ raise ArgumentError, "expect platform to be :watir_webdriver or :selenium_webdriver"
29
+ end
30
+ end
31
+ end
32
+
33
+ ::PageObject::Elements.tag_to_class[:img] = ::PageObject::Elements::Image
34
+
35
+ end
36
+ end
@@ -0,0 +1,19 @@
1
+ module PageObject
2
+ module Elements
3
+ class Label < Element
4
+
5
+ protected
6
+
7
+ def self.watir_finders
8
+ super + [:text]
9
+ end
10
+
11
+ def self.selenium_finders
12
+ super + [:text]
13
+ end
14
+
15
+ end
16
+
17
+ ::PageObject::Elements.tag_to_class[:label] = ::PageObject::Elements::Label
18
+ end
19
+ end
@@ -0,0 +1,46 @@
1
+
2
+ module PageObject
3
+ module Elements
4
+ class Link < Element
5
+
6
+ def initialize(element, platform)
7
+ @element = element
8
+ include_platform_for platform
9
+ end
10
+
11
+ protected
12
+
13
+ def self.watir_finders
14
+ super + [:href, :text, :css, :title]
15
+ end
16
+
17
+ def self.watir_mapping
18
+ super.merge({:link => :text, :link_text => :text})
19
+ end
20
+
21
+ def self.selenium_finders
22
+ super + [:link, :link_text, :title]
23
+ end
24
+
25
+ def self.selenium_mapping
26
+ super.merge(:text => :link_text)
27
+ end
28
+
29
+ def include_platform_for platform
30
+ super
31
+ if platform[:platform] == :watir_webdriver
32
+ require 'page-object/platforms/watir_webdriver/link'
33
+ self.class.send :include, PageObject::Platforms::WatirWebDriver::Link
34
+ elsif platform[:platform] == :selenium_webdriver
35
+ require 'page-object/platforms/selenium_webdriver/link'
36
+ self.class.send :include, PageObject::Platforms::SeleniumWebDriver::Link
37
+ else
38
+ raise ArgumentError, "expect platform to be :watir_webdriver or :selenium_webdriver"
39
+ end
40
+ end
41
+ end
42
+
43
+ ::PageObject::Elements.tag_to_class[:a] = ::PageObject::Elements::Link
44
+
45
+ end
46
+ end
@@ -0,0 +1,19 @@
1
+ module PageObject
2
+ module Elements
3
+ class ListItem < Element
4
+
5
+ protected
6
+
7
+ def self.watir_finders
8
+ super + [:text]
9
+ end
10
+
11
+ def self.selenium_finders
12
+ super + [:text]
13
+ end
14
+ end
15
+
16
+ ::PageObject::Elements.tag_to_class[:li] = ::PageObject::Elements::ListItem
17
+
18
+ end
19
+ end
@@ -0,0 +1,45 @@
1
+
2
+ module PageObject
3
+ module Elements
4
+ class Media < Element
5
+
6
+ def autoplay?
7
+ attribute(:autoplay)
8
+ end
9
+
10
+ def has_controls?
11
+ attribute(:controls)
12
+ end
13
+
14
+ def paused?
15
+ attribute(:paused)
16
+ end
17
+
18
+ def duration
19
+ duration = attribute(:duration)
20
+ return duration.to_f if duration
21
+ end
22
+
23
+ def volume
24
+ volume = attribute(:volume)
25
+ return volume.to_i if volume
26
+ end
27
+
28
+ def ended?
29
+ attribute(:ended)
30
+ end
31
+
32
+ def seeking?
33
+ attribute(:seeking)
34
+ end
35
+
36
+ def loop?
37
+ attribute(:loop)
38
+ end
39
+
40
+ def muted?
41
+ attribute(:muted)
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,10 @@
1
+ module PageObject
2
+ module Elements
3
+ class Option < Element
4
+
5
+ end
6
+
7
+ ::PageObject::Elements.tag_to_class[:option] = ::PageObject::Elements::Option
8
+
9
+ end
10
+ end
@@ -0,0 +1,50 @@
1
+
2
+ module PageObject
3
+ module Elements
4
+ class OrderedList < Element
5
+ include Enumerable
6
+
7
+ def initialize(element, platform)
8
+ @element = element
9
+ include_platform_for platform
10
+ end
11
+
12
+ #
13
+ # iterator that yields with a PageObject::Elements::ListItem
14
+ #
15
+ # @return [PageObject::Elements::ListItem]
16
+ #
17
+ def each
18
+ for index in 1..self.items do
19
+ yield self[index-1]
20
+ end
21
+ end
22
+
23
+ protected
24
+
25
+ def child_xpath
26
+ ".//child::li"
27
+ end
28
+
29
+ def self.watir_finders
30
+ [:class, :id, :index, :xpath]
31
+ end
32
+
33
+ def include_platform_for platform
34
+ super
35
+ if platform[:platform] == :watir_webdriver
36
+ require 'page-object/platforms/watir_webdriver/ordered_list'
37
+ self.class.send :include, PageObject::Platforms::WatirWebDriver::OrderedList
38
+ elsif platform[:platform] == :selenium_webdriver
39
+ require 'page-object/platforms/selenium_webdriver/ordered_list'
40
+ self.class.send :include, PageObject::Platforms::SeleniumWebDriver::OrderedList
41
+ else
42
+ raise ArgumentError, "expect platform to be :watir_webdriver or :selenium_webdriver"
43
+ end
44
+ end
45
+
46
+ end
47
+
48
+ ::PageObject::Elements.tag_to_class[:ol] = ::PageObject::Elements::OrderedList
49
+ end
50
+ end
@@ -0,0 +1,9 @@
1
+ module PageObject
2
+ module Elements
3
+ class Paragraph < Element
4
+
5
+ end
6
+
7
+ ::PageObject::Elements.tag_to_class[:p] = ::PageObject::Elements::Paragraph
8
+ end
9
+ end
@@ -0,0 +1,37 @@
1
+
2
+ module PageObject
3
+ module Elements
4
+ class RadioButton < Element
5
+
6
+ def initialize(element, platform)
7
+ @element = element
8
+ include_platform_for platform
9
+ end
10
+
11
+ protected
12
+
13
+ def self.watir_finders
14
+ super + [:value, :label]
15
+ end
16
+
17
+ def self.selenium_finders
18
+ super + [:value, :label]
19
+ end
20
+
21
+ def include_platform_for platform
22
+ super
23
+ if platform[:platform] == :watir_webdriver
24
+ require 'page-object/platforms/watir_webdriver/radio_button'
25
+ self.class.send :include, PageObject::Platforms::WatirWebDriver::RadioButton
26
+ elsif platform[:platform] == :selenium_webdriver
27
+ require 'page-object/platforms/selenium_webdriver/radio_button'
28
+ self.class.send :include, PageObject::Platforms::SeleniumWebDriver::RadioButton
29
+ else
30
+ raise ArgumentError, "expect platform to be :watir_webdriver or :selenium_webdriver"
31
+ end
32
+ end
33
+ end
34
+
35
+ ::PageObject::Elements.type_to_class[:radio] = ::PageObject::Elements::RadioButton
36
+ end
37
+ end
@@ -0,0 +1,42 @@
1
+
2
+ module PageObject
3
+ module Elements
4
+ class SelectList < Element
5
+
6
+ def initialize(element, platform)
7
+ @element = element
8
+ include_platform_for platform
9
+ end
10
+
11
+ protected
12
+
13
+ def child_xpath
14
+ ".//child::option"
15
+ end
16
+
17
+ def self.watir_finders
18
+ super + [:text, :value, :label]
19
+ end
20
+
21
+ def self.selenium_finders
22
+ super + [:label]
23
+ end
24
+
25
+ def include_platform_for platform
26
+ super
27
+ if platform[:platform] == :watir_webdriver
28
+ require 'page-object/platforms/watir_webdriver/select_list'
29
+ self.class.send :include, PageObject::Platforms::WatirWebDriver::SelectList
30
+ elsif platform[:platform] == :selenium_webdriver
31
+ require 'page-object/platforms/selenium_webdriver/select_list'
32
+ self.class.send :include, PageObject::Platforms::SeleniumWebDriver::SelectList
33
+ else
34
+ raise ArgumentError, "expect platform to be :watir_webdriver or :selenium_webdriver"
35
+ end
36
+ end
37
+
38
+ end
39
+
40
+ ::PageObject::Elements.tag_to_class[:select] = ::PageObject::Elements::SelectList
41
+ end
42
+ end
@@ -0,0 +1,19 @@
1
+ module PageObject
2
+ module Elements
3
+ class Span < Element
4
+
5
+ protected
6
+
7
+ def self.watir_finders
8
+ [:class, :id, :index, :text, :title, :xpath]
9
+ end
10
+
11
+ def self.selenium_finders
12
+ [:class, :css, :id, :name, :text, :title, :xpath, :index]
13
+ end
14
+ end
15
+
16
+ ::PageObject::Elements.tag_to_class[:span] = ::PageObject::Elements::Span
17
+
18
+ end
19
+ end