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,37 @@
1
+ Feature: Support for the canvas element
2
+
3
+ Background:
4
+ Given I am on the static elements page
5
+
6
+ Scenario: Retrieve a canvas element
7
+ When I retrieve the canvas element
8
+ Then I should know it exists
9
+ And I should know it is visible
10
+
11
+ Scenario Outline: Locating a canvas on the page
12
+ When I search for the canvas by "<search_by>"
13
+ Then I should know it is visible
14
+
15
+ Examples:
16
+ | search_by |
17
+ | id |
18
+ | class |
19
+ | name |
20
+ | xpath |
21
+ | index |
22
+ | css |
23
+
24
+ Scenario: Determining the width and height of the canvas
25
+ When I retrieve the canvas element
26
+ Then I should see that the canvas width is "200"
27
+ And I should see that the canvas height is "100"
28
+
29
+ Scenario Outline: Locating canvases using multiple parameters
30
+ When I search for the canvas element by "<param1>" and "<param2>"
31
+ Then I should know it is visible
32
+
33
+ Scenarios:
34
+ | param1 | param2 |
35
+ | class | index |
36
+ | name | index |
37
+
@@ -0,0 +1,55 @@
1
+ Feature: Check Box
2
+ In order to interact with check boxes
3
+ Testers will need access and interrogation ability
4
+
5
+
6
+ Background:
7
+ Given I am on the static elements page
8
+
9
+ Scenario: Selecting a check box
10
+ When I select the First check box
11
+ Then the First check box should be selected
12
+ When I unselect the First check box
13
+ Then the First check box should not be selected
14
+
15
+ Scenario Outline: Locating check boxes on the page
16
+ When I search for the check box by "<search_by>"
17
+ Then I should be able to check the check box
18
+
19
+ Scenarios:
20
+ | search_by |
21
+ | id |
22
+ | class |
23
+ | name |
24
+ | xpath |
25
+ | index |
26
+ | value |
27
+ | label |
28
+
29
+ @selenium_only
30
+ Scenario Outline: Locating check boxes on the page
31
+ When I search for the check box by "<search_by>"
32
+ Then I should be able to check the check box
33
+
34
+ Scenarios:
35
+ | search_by |
36
+ | css |
37
+
38
+ Scenario Outline: Locating check boxes using multiple parameters
39
+ When I search for the check box by "<param1>" and "<param2>"
40
+ Then I should be able to check the check box
41
+
42
+ Scenarios:
43
+ | param1 | param2 |
44
+ | class | index |
45
+ | name | index |
46
+
47
+ Scenario: Retrieve a CheckBox
48
+ When I retrieve a check box element
49
+ Then I should know it exists
50
+ And I should know it is visible
51
+
52
+ Scenario: Finding a check box dynamically
53
+ When I select the first check box while the script is executing
54
+ Then I should see that the checkbox exists
55
+ And the First check box should be selected
@@ -0,0 +1,45 @@
1
+ Feature: Div
2
+ In order to interact with divs
3
+ Testers will need access and interrogation ability
4
+
5
+
6
+ Background:
7
+ Given I am on the static elements page
8
+
9
+ Scenario: Getting the text from a div
10
+ When I get the text from the div
11
+ Then the text should be "page-object rocks!"
12
+
13
+ Scenario: Getting the div element
14
+ When I retrieve the div element
15
+ Then I should know it exists
16
+ And I should know it is visible
17
+
18
+ Scenario Outline: Locating divs on the page
19
+ When I search for the div by "<search_by>"
20
+ Then the text should be "page-object rocks!"
21
+
22
+ Scenarios:
23
+ | search_by |
24
+ | id |
25
+ | class |
26
+ | xpath |
27
+ | index |
28
+ | name |
29
+ | text |
30
+ | title |
31
+ | css |
32
+
33
+ Scenario Outline: Locating divs using multiple parameters
34
+ When I search for the div by "<param1>" and "<param2>"
35
+ Then the text should be "page-object rocks!"
36
+
37
+ Scenarios:
38
+ | param1 | param2 |
39
+ | class | index |
40
+ | name | index |
41
+
42
+ Scenario: Finding a div dynamically
43
+ When I get the text from a div while the script is executing
44
+ Then I should see that the div exists
45
+ And the text should be "page-object rocks!"
@@ -0,0 +1,322 @@
1
+ Feature: Elements
2
+
3
+ Background:
4
+ Given I am on the static elements page
5
+
6
+ Scenario: Clear an element
7
+ When I type "abcDEF" into the text field
8
+ Then the text field should contain "abcDEF"
9
+ When I clear the text field
10
+ Then the text field should contain ""
11
+
12
+ Scenario: Elements enabled?
13
+ When I check an enabled button
14
+ Then it should know it is enabled
15
+ And it should know that is it not disabled
16
+ When I check a disabled button
17
+ Then it should know it is not enabled
18
+ And it should know that it is disabled
19
+
20
+ Scenario: Setting focus and finding the element with focus
21
+ When I set the focus to the test text_field
22
+ Then I should know that the text_field has the focus
23
+
24
+ Scenario: Link element methods
25
+ When I retrieve a link element
26
+ Then I should know it exists
27
+ And I should know it is visible
28
+ And I should know the text is "Google Search"
29
+ And I should know the html is "<a href="success.html" id="link_id" name="link_name" class="link_class" title="link_title">Google Search</a>"
30
+ And I should know it is equal to itself
31
+ And I should know the tag name is "a"
32
+ And I should know the attribute "readonly" is false
33
+ And I should know the attribute "href" includes "success.html"
34
+ And I should be able to click it
35
+
36
+ @watir_only
37
+ Scenario: Link element methods for watir
38
+ When I retrieve a link element
39
+ Then I should know the value is ""
40
+
41
+
42
+ Scenario: Button element methods
43
+ When I retrieve a button element
44
+ Then I should know it exists
45
+ And I should know it is visible
46
+ And I should know the value is "Click Me"
47
+ And I should know it is equal to itself
48
+ And I should know the tag name is "input"
49
+ And I should know the attribute "readonly" is false
50
+ And I should be able to click it
51
+
52
+ @watir_only
53
+ Scenario: Button element methods for watir
54
+ When I retrieve a button element
55
+ Then I should know the text is "Click Me"
56
+
57
+ Scenario: Check Box element methods
58
+ When I retrieve a check box element
59
+ Then I should know it exists
60
+ And I should know it is visible
61
+ And I should know the text is ""
62
+ And I should know the value is "1"
63
+ And I should know it is equal to itself
64
+ And I should know the tag name is "input"
65
+ And I should know the attribute "readonly" is false
66
+ And I should be able to click it
67
+
68
+ Scenario: Div element methods
69
+ When I retrieve the div element
70
+ Then I should know it exists
71
+ And I should know it is visible
72
+ And I should know the text is "page-object rocks!"
73
+ And I should know it is equal to itself
74
+ And I should know the tag name is "div"
75
+ And I should know the attribute "readonly" is false
76
+ And I should be able to click it
77
+
78
+ @watir_only
79
+ Scenario: Div element methods for watir
80
+ When I retrieve the div element
81
+ Then I should know the value is ""
82
+
83
+ @selenium_only
84
+ Scenario: Div element methods for selenium
85
+ When I retrieve the div element
86
+ Then I should know the value is nil
87
+
88
+ Scenario: Radio Button element methods
89
+ When I retrieve a radio button
90
+ Then I should know it exists
91
+ And I should know it is visible
92
+ And I should know the text is ""
93
+ And I should know the value is "Milk"
94
+ And I should know it is equal to itself
95
+ And I should know the tag name is "input"
96
+ And I should know the attribute "readonly" is false
97
+ And I should be able to click it
98
+
99
+ Scenario: Select List element methods
100
+ When I retrieve a select list
101
+ Then I should know it exists
102
+ And I should know it is visible
103
+ And I should know the text includes "Test 1"
104
+ And I should know the value is "option1"
105
+ And I should know it is equal to itself
106
+ And I should know the tag name is "select"
107
+ And I should know the attribute "readonly" is false
108
+ And I should be able to click it
109
+
110
+ Scenario: Table element methods
111
+ When I retrieve a table element
112
+ Then I should know it is visible
113
+ And I should know the text includes "Data1"
114
+ And I should know it is equal to itself
115
+ And I should know the tag name is "table"
116
+ And I should know the attribute "readonly" is false
117
+ And I should be able to click it
118
+
119
+ @watir_only
120
+ Scenario: Table element methods in watir
121
+ When I retrieve a table element
122
+ Then I should know it exists
123
+ And I should know the value is ""
124
+
125
+ @selenium_only
126
+ Scenario: Table element methods in selenium
127
+ When I retrieve a table element
128
+ Then I should know the value is nil
129
+
130
+ Scenario: Table Cell element methods
131
+ When I retrieve table cell
132
+ Then I should know it exists
133
+ And I should know it is visible
134
+ And I should know the text includes "Data4"
135
+ And I should know it is equal to itself
136
+ And I should know the tag name is "td"
137
+ And I should know the attribute "readonly" is false
138
+ And I should be able to click it
139
+
140
+ @watir_only
141
+ Scenario: Table Cell element methods in watir
142
+ When I retrieve table cell
143
+ Then I should know the value is ""
144
+
145
+ @selenium_only
146
+ Scenario: Table Cell element methods in selenium
147
+ When I retrieve table cell
148
+ Then I should know the value is nil
149
+
150
+ Scenario: Text Field element methods
151
+ When I retrieve a text field
152
+ Then I should know it exists
153
+ And I should know it is visible
154
+ And I should know the text includes ""
155
+ And I should know the value is ""
156
+ And I should know it is equal to itself
157
+ And I should know the tag name is "input"
158
+ And I should know the attribute "readonly" is false
159
+ And I should be able to click it
160
+
161
+ Scenario: Text Area element methods
162
+ When I retrieve the text area
163
+ Then I should know it exists
164
+ And I should know it is visible
165
+ And I should know the text includes ""
166
+ And I should know the value is ""
167
+ And I should know it is equal to itself
168
+ And I should know the tag name is "textarea"
169
+ And I should know the attribute "readonly" is false
170
+ And I should be able to click it
171
+
172
+ Scenario: Image element methods
173
+ When I get the image element
174
+ Then I should know it exists
175
+ And I should know it is visible
176
+ And I should know the text includes ""
177
+ And I should know it is equal to itself
178
+ And I should know the tag name is "img"
179
+ And I should know the attribute "readonly" is false
180
+ And I should be able to click it
181
+
182
+ @watir_only
183
+ Scenario: Image element methods in watir
184
+ When I get the image element
185
+ Then I should know the value is ""
186
+
187
+ @selenium_only
188
+ Scenario: Image element methods in selenium
189
+ When I get the image element
190
+ Then I should know the value is nil
191
+
192
+ Scenario: Hidden Field element methods
193
+ When I retrieve the hidden field element
194
+ Then I should know it exists
195
+ And I should know it is not visible
196
+ And I should know the text includes ""
197
+ And I should know the value is "12345"
198
+ And I should know it is equal to itself
199
+ And I should know the tag name is "input"
200
+ And I should know the attribute "readonly" is false
201
+
202
+ Scenario: Form element methods
203
+ When I locate the form
204
+ Then I should know it exists
205
+ And I should know it is visible
206
+ And I should know the text includes ""
207
+ And I should know it is equal to itself
208
+ And I should know the tag name is "form"
209
+ And I should know the attribute "readonly" is false
210
+
211
+ @watir_only
212
+ Scenario: Form element methods in watir
213
+ When I locate the form
214
+ Then I should know the value is ""
215
+
216
+ @selenium_only
217
+ Scenario: Form element methods in selenium
218
+ When I locate the form
219
+ Then I should know the value is nil
220
+
221
+ Scenario: List item element methods
222
+ When I retrieve a list item element
223
+ Then I should know it exists
224
+ And I should know it is visible
225
+ And I should know the text is "Item One"
226
+ And I should know it is equal to itself
227
+ And I should know the tag name is "li"
228
+ And I should know the attribute "readonly" is false
229
+ And I should be able to click it
230
+
231
+ Scenario: Unordered list element methods
232
+ When I retrieve an unordered list element
233
+ Then I should know it exists
234
+ And I should know it is visible
235
+ And I should know the text includes "Item One"
236
+ And I should know the text includes "Item Two"
237
+ And I should know the text includes "Item Three"
238
+ And I should know it is equal to itself
239
+ And I should know the tag name is "ul"
240
+ And I should know the attribute "readonly" is false
241
+ And I should be able to click it
242
+
243
+ Scenario: Ordered list element methods
244
+ When I retrieve an ordered list element
245
+ Then I should know it exists
246
+ And I should know it is visible
247
+ And I should know the text includes "Number One"
248
+ And I should know the text includes "Number Two"
249
+ And I should know the text includes "Number Three"
250
+ And I should know it is equal to itself
251
+ And I should know the tag name is "ol"
252
+ And I should know the attribute "readonly" is false
253
+ And I should be able to click it
254
+
255
+ Scenario: Heading element methods
256
+ When I retrieve a heading element
257
+ Then I should know it exists
258
+ And I should know it is visible
259
+ And I should know the text is "h1's are cool"
260
+ And I should know it is equal to itself
261
+ And I should know the tag name is "h1"
262
+ And I should know the attribute "readonly" is false
263
+ And I should be able to click it
264
+
265
+ Scenario: Firing an event
266
+ When I set the focus to the test text_field using the onfocus event
267
+ Then I should see the onfocus text "changed by onfocus event"
268
+
269
+ Scenario: Hovering over an element
270
+ Given I am on the hover page
271
+ When I hover over the hello link
272
+ Then the font size should be "20px"
273
+
274
+ Scenario: Setting focus on an element
275
+ When I set the focus on the test text_field
276
+ Then I should see the onfocus text "changed by onfocus event"
277
+
278
+ Scenario: Finding a parent element
279
+ When I find the child link element
280
+ And ask for the parent element
281
+ Then I should have a div parent
282
+
283
+ Scenario: Flashing an element
284
+ When I retrieve a button element
285
+ Then I should be able to flash it
286
+
287
+ Scenario: Getting an element's id
288
+ When I retrieve a button element
289
+ Then I should know its id is "button_id"
290
+
291
+ Scenario: Double Clicking
292
+ Given I am on the Double Click page
293
+ When I double click the button
294
+ Then the paragraph should read "Double Click Received"
295
+
296
+ Scenario: Scrolling so an element is visible
297
+ When I retrieve a heading element
298
+ And I scroll the heading element into view
299
+ Then the heading element should be visible
300
+
301
+ @watir_only
302
+ Scenario: Expanding how we find elements to include non-standard locators
303
+ When I retrieve a div using data-entity
304
+ Then I should know it exists
305
+ And I should know it is visible
306
+ And I should know the text is "found using data-entity"
307
+
308
+
309
+ Scenario: Accessing an HTML 5 element using the declaration
310
+ When I retrieve the figure using the declaration
311
+ Then I should see the figure contains an image
312
+
313
+ Scenario: Accessing an HTML 5 element using the element method
314
+ When I retrieve the figure using the element
315
+ Then I should see the figure contains an image
316
+
317
+ Scenario: Getting the class name for an element
318
+ When I search for the paragraph by "id"
319
+ Then I should know the paragraph class is "p_class"
320
+
321
+ Scenario: Selecting the text for an element
322
+ Then I should be able to select "Elements" from the paragraph