page-object-lds 0.0.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 (281) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +8 -0
  3. data/.rspec +2 -0
  4. data/.ruby-gemset +1 -0
  5. data/.ruby-version +1 -0
  6. data/.travis.yml +10 -0
  7. data/ChangeLog +799 -0
  8. data/Gemfile +13 -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 +88 -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 +52 -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 +205 -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 +98 -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/select_list.feature +86 -0
  81. data/features/span.feature +37 -0
  82. data/features/step_definitions/accessor_steps.rb +60 -0
  83. data/features/step_definitions/area_steps.rb +19 -0
  84. data/features/step_definitions/async_steps.rb +83 -0
  85. data/features/step_definitions/audio_steps.rb +27 -0
  86. data/features/step_definitions/bold_steps.rb +12 -0
  87. data/features/step_definitions/button_steps.rb +43 -0
  88. data/features/step_definitions/canvas_steps.rb +15 -0
  89. data/features/step_definitions/check_box_steps.rb +35 -0
  90. data/features/step_definitions/div_steps.rb +19 -0
  91. data/features/step_definitions/element_steps.rb +266 -0
  92. data/features/step_definitions/file_field_steps.rb +19 -0
  93. data/features/step_definitions/form_steps.rb +19 -0
  94. data/features/step_definitions/frames_steps.rb +159 -0
  95. data/features/step_definitions/generic_element_steps.rb +31 -0
  96. data/features/step_definitions/gxt_table_steps.rb +58 -0
  97. data/features/step_definitions/headings_steps.rb +12 -0
  98. data/features/step_definitions/hidden_field_steps.rb +27 -0
  99. data/features/step_definitions/image_steps.rb +27 -0
  100. data/features/step_definitions/indexed_property_steps.rb +129 -0
  101. data/features/step_definitions/javascript_steps.rb +53 -0
  102. data/features/step_definitions/label_steps.rb +19 -0
  103. data/features/step_definitions/link_steps.rb +40 -0
  104. data/features/step_definitions/list_item_steps.rb +19 -0
  105. data/features/step_definitions/modal_dialog_steps.rb +62 -0
  106. data/features/step_definitions/multi_elements_steps.rb +541 -0
  107. data/features/step_definitions/nested_elements_steps.rb +212 -0
  108. data/features/step_definitions/ordered_list_steps.rb +23 -0
  109. data/features/step_definitions/page_level_actions_steps.rb +135 -0
  110. data/features/step_definitions/page_traversal_steps.rb +4 -0
  111. data/features/step_definitions/paragraph_steps.rb +28 -0
  112. data/features/step_definitions/radio_button_group_steps.rb +36 -0
  113. data/features/step_definitions/radio_button_steps.rb +27 -0
  114. data/features/step_definitions/select_list_steps.rb +65 -0
  115. data/features/step_definitions/span_steps.rb +19 -0
  116. data/features/step_definitions/table_cell_steps.rb +15 -0
  117. data/features/step_definitions/table_steps.rb +70 -0
  118. data/features/step_definitions/text_area_steps.rb +35 -0
  119. data/features/step_definitions/text_field_steps.rb +35 -0
  120. data/features/step_definitions/unordered_list_steps.rb +23 -0
  121. data/features/step_definitions/video_steps.rb +45 -0
  122. data/features/support/ajax_text_environment.rb +26 -0
  123. data/features/support/env.rb +8 -0
  124. data/features/support/hooks.rb +8 -0
  125. data/features/support/page.rb +373 -0
  126. data/features/support/persistent_browser.rb +70 -0
  127. data/features/support/targets/firefox14_osx.rb +6 -0
  128. data/features/support/targets/firefox14_windows7.rb +6 -0
  129. data/features/support/url_helper.rb +57 -0
  130. data/features/table.feature +122 -0
  131. data/features/table_cell.feature +45 -0
  132. data/features/text_area.feature +51 -0
  133. data/features/text_field.feature +70 -0
  134. data/features/unordered_list.feature +56 -0
  135. data/features/video.feature +73 -0
  136. data/lib/page-object-lds.rb +421 -0
  137. data/lib/page-object/accessors.rb +1334 -0
  138. data/lib/page-object/core_ext/string.rb +5 -0
  139. data/lib/page-object/element_locators.rb +21 -0
  140. data/lib/page-object/elements/area.rb +31 -0
  141. data/lib/page-object/elements/audio.rb +9 -0
  142. data/lib/page-object/elements/bold.rb +11 -0
  143. data/lib/page-object/elements/button.rb +35 -0
  144. data/lib/page-object/elements/canvas.rb +23 -0
  145. data/lib/page-object/elements/check_box.rb +40 -0
  146. data/lib/page-object/elements/div.rb +19 -0
  147. data/lib/page-object/elements/element.rb +225 -0
  148. data/lib/page-object/elements/file_field.rb +41 -0
  149. data/lib/page-object/elements/form.rb +39 -0
  150. data/lib/page-object/elements/heading.rb +15 -0
  151. data/lib/page-object/elements/hidden_field.rb +22 -0
  152. data/lib/page-object/elements/image.rb +39 -0
  153. data/lib/page-object/elements/label.rb +19 -0
  154. data/lib/page-object/elements/link.rb +49 -0
  155. data/lib/page-object/elements/list_item.rb +19 -0
  156. data/lib/page-object/elements/media.rb +45 -0
  157. data/lib/page-object/elements/option.rb +10 -0
  158. data/lib/page-object/elements/ordered_list.rb +53 -0
  159. data/lib/page-object/elements/paragraph.rb +9 -0
  160. data/lib/page-object/elements/radio_button.rb +40 -0
  161. data/lib/page-object/elements/select_list.rb +45 -0
  162. data/lib/page-object/elements/span.rb +19 -0
  163. data/lib/page-object/elements/table.rb +82 -0
  164. data/lib/page-object/elements/table_cell.rb +28 -0
  165. data/lib/page-object/elements/table_row.rb +53 -0
  166. data/lib/page-object/elements/text_area.rb +41 -0
  167. data/lib/page-object/elements/text_field.rb +45 -0
  168. data/lib/page-object/elements/unordered_list.rb +54 -0
  169. data/lib/page-object/elements/video.rb +18 -0
  170. data/lib/page-object/indexed_properties.rb +36 -0
  171. data/lib/page-object/javascript/angularjs.rb +14 -0
  172. data/lib/page-object/javascript/jquery.rb +14 -0
  173. data/lib/page-object/javascript/prototype.rb +14 -0
  174. data/lib/page-object/javascript/yui.rb +19 -0
  175. data/lib/page-object/javascript_framework_facade.rb +80 -0
  176. data/lib/page-object/loads_platform.rb +26 -0
  177. data/lib/page-object/locator_generator.rb +130 -0
  178. data/lib/page-object/nested_elements.rb +17 -0
  179. data/lib/page-object/page_factory.rb +108 -0
  180. data/lib/page-object/page_populator.rb +83 -0
  181. data/lib/page-object/platforms.rb +19 -0
  182. data/lib/page-object/platforms/lds_watir_webdriver.rb +17 -0
  183. data/lib/page-object/platforms/lds_watir_webdriver/check_box.rb +29 -0
  184. data/lib/page-object/platforms/lds_watir_webdriver/element.rb +249 -0
  185. data/lib/page-object/platforms/lds_watir_webdriver/file_field.rb +16 -0
  186. data/lib/page-object/platforms/lds_watir_webdriver/form.rb +16 -0
  187. data/lib/page-object/platforms/lds_watir_webdriver/image.rb +22 -0
  188. data/lib/page-object/platforms/lds_watir_webdriver/link.rb +15 -0
  189. data/lib/page-object/platforms/lds_watir_webdriver/ordered_list.rb +35 -0
  190. data/lib/page-object/platforms/lds_watir_webdriver/page_object.rb +1044 -0
  191. data/lib/page-object/platforms/lds_watir_webdriver/radio_button.rb +22 -0
  192. data/lib/page-object/platforms/lds_watir_webdriver/select_list.rb +74 -0
  193. data/lib/page-object/platforms/lds_watir_webdriver/table.rb +38 -0
  194. data/lib/page-object/platforms/lds_watir_webdriver/table_row.rb +37 -0
  195. data/lib/page-object/platforms/lds_watir_webdriver/text_area.rb +23 -0
  196. data/lib/page-object/platforms/lds_watir_webdriver/text_field.rb +16 -0
  197. data/lib/page-object/platforms/lds_watir_webdriver/unordered_list.rb +36 -0
  198. data/lib/page-object/platforms/selenium_webdriver.rb +17 -0
  199. data/lib/page-object/platforms/selenium_webdriver/button.rb +15 -0
  200. data/lib/page-object/platforms/selenium_webdriver/check_box.rb +29 -0
  201. data/lib/page-object/platforms/selenium_webdriver/element.rb +291 -0
  202. data/lib/page-object/platforms/selenium_webdriver/file_field.rb +16 -0
  203. data/lib/page-object/platforms/selenium_webdriver/form.rb +16 -0
  204. data/lib/page-object/platforms/selenium_webdriver/image.rb +28 -0
  205. data/lib/page-object/platforms/selenium_webdriver/link.rb +23 -0
  206. data/lib/page-object/platforms/selenium_webdriver/ordered_list.rb +39 -0
  207. data/lib/page-object/platforms/selenium_webdriver/page_object.rb +1162 -0
  208. data/lib/page-object/platforms/selenium_webdriver/radio_button.rb +22 -0
  209. data/lib/page-object/platforms/selenium_webdriver/select_list.rb +93 -0
  210. data/lib/page-object/platforms/selenium_webdriver/surrogate_selenium_element.rb +42 -0
  211. data/lib/page-object/platforms/selenium_webdriver/table.rb +42 -0
  212. data/lib/page-object/platforms/selenium_webdriver/table_row.rb +43 -0
  213. data/lib/page-object/platforms/selenium_webdriver/text_area.rb +17 -0
  214. data/lib/page-object/platforms/selenium_webdriver/text_field.rb +17 -0
  215. data/lib/page-object/platforms/selenium_webdriver/unordered_list.rb +39 -0
  216. data/lib/page-object/platforms/watir_webdriver.rb +17 -0
  217. data/lib/page-object/platforms/watir_webdriver/check_box.rb +29 -0
  218. data/lib/page-object/platforms/watir_webdriver/element.rb +249 -0
  219. data/lib/page-object/platforms/watir_webdriver/file_field.rb +16 -0
  220. data/lib/page-object/platforms/watir_webdriver/form.rb +16 -0
  221. data/lib/page-object/platforms/watir_webdriver/image.rb +22 -0
  222. data/lib/page-object/platforms/watir_webdriver/link.rb +15 -0
  223. data/lib/page-object/platforms/watir_webdriver/ordered_list.rb +35 -0
  224. data/lib/page-object/platforms/watir_webdriver/page_object.rb +1044 -0
  225. data/lib/page-object/platforms/watir_webdriver/radio_button.rb +22 -0
  226. data/lib/page-object/platforms/watir_webdriver/select_list.rb +74 -0
  227. data/lib/page-object/platforms/watir_webdriver/table.rb +38 -0
  228. data/lib/page-object/platforms/watir_webdriver/table_row.rb +37 -0
  229. data/lib/page-object/platforms/watir_webdriver/text_area.rb +23 -0
  230. data/lib/page-object/platforms/watir_webdriver/text_field.rb +16 -0
  231. data/lib/page-object/platforms/watir_webdriver/unordered_list.rb +36 -0
  232. data/lib/page-object/version.rb +4 -0
  233. data/lib/page-object/widgets.rb +134 -0
  234. data/page-object-lds.gemspec +33 -0
  235. data/pageobject.gems +1 -0
  236. data/spec/page-object/accessors_spec.rb +40 -0
  237. data/spec/page-object/element_locators_spec.rb +1100 -0
  238. data/spec/page-object/elements/area_spec.rb +45 -0
  239. data/spec/page-object/elements/bold_spec.rb +29 -0
  240. data/spec/page-object/elements/button_spec.rb +50 -0
  241. data/spec/page-object/elements/canvas_spec.rb +40 -0
  242. data/spec/page-object/elements/check_box_spec.rb +49 -0
  243. data/spec/page-object/elements/div_spec.rb +28 -0
  244. data/spec/page-object/elements/element_spec.rb +114 -0
  245. data/spec/page-object/elements/file_field_spec.rb +39 -0
  246. data/spec/page-object/elements/form_spec.rb +28 -0
  247. data/spec/page-object/elements/heading_spec.rb +48 -0
  248. data/spec/page-object/elements/hidden_field_spec.rb +28 -0
  249. data/spec/page-object/elements/image_spec.rb +66 -0
  250. data/spec/page-object/elements/label_spec.rb +29 -0
  251. data/spec/page-object/elements/link_spec.rb +49 -0
  252. data/spec/page-object/elements/list_item_spec.rb +29 -0
  253. data/spec/page-object/elements/nested_element_spec.rb +254 -0
  254. data/spec/page-object/elements/option_spec.rb +11 -0
  255. data/spec/page-object/elements/ordered_list_spec.rb +94 -0
  256. data/spec/page-object/elements/paragraph_spec.rb +27 -0
  257. data/spec/page-object/elements/select_list_spec.rb +142 -0
  258. data/spec/page-object/elements/selenium/radio_button_spec.rb +44 -0
  259. data/spec/page-object/elements/selenium/text_field_spec.rb +49 -0
  260. data/spec/page-object/elements/selenium_element_spec.rb +172 -0
  261. data/spec/page-object/elements/span_spec.rb +26 -0
  262. data/spec/page-object/elements/table_cell_spec.rb +21 -0
  263. data/spec/page-object/elements/table_row_spec.rb +70 -0
  264. data/spec/page-object/elements/table_spec.rb +98 -0
  265. data/spec/page-object/elements/text_area_spec.rb +39 -0
  266. data/spec/page-object/elements/unordered_list_spec.rb +94 -0
  267. data/spec/page-object/elements/watir_element_spec.rb +141 -0
  268. data/spec/page-object/javascript_framework_facade_spec.rb +61 -0
  269. data/spec/page-object/loads_platform_spec.rb +53 -0
  270. data/spec/page-object/page-object_spec.rb +413 -0
  271. data/spec/page-object/page_factory_spec.rb +238 -0
  272. data/spec/page-object/page_populator_spec.rb +122 -0
  273. data/spec/page-object/platforms/selenium_webdriver/selenium_page_object_spec.rb +68 -0
  274. data/spec/page-object/platforms/selenium_webdriver_spec.rb +29 -0
  275. data/spec/page-object/platforms/watir_webdriver/watir_page_object_spec.rb +29 -0
  276. data/spec/page-object/platforms/watir_webdriver_spec.rb +9 -0
  277. data/spec/page-object/selenium_accessors_spec.rb +609 -0
  278. data/spec/page-object/watir_accessors_spec.rb +1134 -0
  279. data/spec/page-object/widget_spec.rb +226 -0
  280. data/spec/spec_helper.rb +44 -0
  281. metadata +430 -0
@@ -0,0 +1,39 @@
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] == :lds_watir_webdriver
26
+ require 'page-object/platforms/lds_watir_webdriver/form'
27
+ self.class.send :include, PageObject::Platforms::LdsWatirWebDriver::Form
28
+ elsif platform[:platform] == :selenium_webdriver
29
+ require 'page-object/platforms/selenium_webdriver/form'
30
+ self.class.send :include, PageObject::Platforms::SeleniumWebDriver::Form
31
+ else
32
+ raise ArgumentError, "expect platform to be :watir_webdriver or :selenium_webdriver"
33
+ end
34
+ end
35
+ end
36
+
37
+ ::PageObject::Elements.tag_to_class[:form] = ::PageObject::Elements::Form
38
+ end
39
+ 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,39 @@
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] == :lds_watir_webdriver
25
+ require 'page-object/platforms/lds_watir_webdriver/image'
26
+ self.class.send :include, PageObject::Platforms::LdsWatirWebDriver::Image
27
+ elsif platform[:platform] == :selenium_webdriver
28
+ require 'page-object/platforms/selenium_webdriver/image'
29
+ self.class.send :include, PageObject::Platforms::SeleniumWebDriver::Image
30
+ else
31
+ raise ArgumentError, "expect platform to be :watir_webdriver or :selenium_webdriver"
32
+ end
33
+ end
34
+ end
35
+
36
+ ::PageObject::Elements.tag_to_class[:img] = ::PageObject::Elements::Image
37
+
38
+ end
39
+ 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,49 @@
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] == :lds_watir_webdriver
35
+ require 'page-object/platforms/lds_watir_webdriver/link'
36
+ self.class.send :include, PageObject::Platforms::LdsWatirWebDriver::Link
37
+ elsif platform[:platform] == :selenium_webdriver
38
+ require 'page-object/platforms/selenium_webdriver/link'
39
+ self.class.send :include, PageObject::Platforms::SeleniumWebDriver::Link
40
+ else
41
+ raise ArgumentError, "expect platform to be :watir_webdriver or :selenium_webdriver"
42
+ end
43
+ end
44
+ end
45
+
46
+ ::PageObject::Elements.tag_to_class[:a] = ::PageObject::Elements::Link
47
+
48
+ end
49
+ 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,53 @@
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] == :lds_watir_webdriver
39
+ require 'page-object/platforms/lds_watir_webdriver/ordered_list'
40
+ self.class.send :include, PageObject::Platforms::LdsWatirWebDriver::OrderedList
41
+ elsif platform[:platform] == :selenium_webdriver
42
+ require 'page-object/platforms/selenium_webdriver/ordered_list'
43
+ self.class.send :include, PageObject::Platforms::SeleniumWebDriver::OrderedList
44
+ else
45
+ raise ArgumentError, "expect platform to be :watir_webdriver or :selenium_webdriver"
46
+ end
47
+ end
48
+
49
+ end
50
+
51
+ ::PageObject::Elements.tag_to_class[:ol] = ::PageObject::Elements::OrderedList
52
+ end
53
+ 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,40 @@
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] == :lds_watir_webdriver
27
+ require 'page-object/platforms/lds_watir_webdriver/radio_button'
28
+ self.class.send :include, PageObject::Platforms::LdsWatirWebDriver::RadioButton
29
+ elsif platform[:platform] == :selenium_webdriver
30
+ require 'page-object/platforms/selenium_webdriver/radio_button'
31
+ self.class.send :include, PageObject::Platforms::SeleniumWebDriver::RadioButton
32
+ else
33
+ raise ArgumentError, "expect platform to be :watir_webdriver or :selenium_webdriver"
34
+ end
35
+ end
36
+ end
37
+
38
+ ::PageObject::Elements.type_to_class[:radio] = ::PageObject::Elements::RadioButton
39
+ end
40
+ end
@@ -0,0 +1,45 @@
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] == :lds_watir_webdriver
31
+ require 'page-object/platforms/lds_watir_webdriver/select_list'
32
+ self.class.send :include, PageObject::Platforms::LdsWatirWebDriver::SelectList
33
+ elsif platform[:platform] == :selenium_webdriver
34
+ require 'page-object/platforms/selenium_webdriver/select_list'
35
+ self.class.send :include, PageObject::Platforms::SeleniumWebDriver::SelectList
36
+ else
37
+ raise ArgumentError, "expect platform to be :watir_webdriver or :selenium_webdriver"
38
+ end
39
+ end
40
+
41
+ end
42
+
43
+ ::PageObject::Elements.tag_to_class[:select] = ::PageObject::Elements::SelectList
44
+ end
45
+ 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