meeane-page-object 0.1.8

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 (262) 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 +10 -0
  7. data/ChangeLog +790 -0
  8. data/Gemfile +13 -0
  9. data/Guardfile +20 -0
  10. data/LICENSE +20 -0
  11. data/README.md +141 -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/button.feature +87 -0
  18. data/features/canvas.feature +37 -0
  19. data/features/check_box.feature +55 -0
  20. data/features/div.feature +45 -0
  21. data/features/element.feature +322 -0
  22. data/features/file_field.feature +40 -0
  23. data/features/form.feature +43 -0
  24. data/features/frames.feature +75 -0
  25. data/features/generic_elements.feature +29 -0
  26. data/features/gxt_table_extension.feature +24 -0
  27. data/features/headings.feature +97 -0
  28. data/features/hidden_field.feature +45 -0
  29. data/features/html/04-Death_Becomes_Fur.mp4 +0 -0
  30. data/features/html/04-Death_Becomes_Fur.oga +0 -0
  31. data/features/html/async.html +36 -0
  32. data/features/html/double_click.html +13 -0
  33. data/features/html/failure.html +8 -0
  34. data/features/html/frame_1.html +18 -0
  35. data/features/html/frame_2.html +16 -0
  36. data/features/html/frame_3.html +14 -0
  37. data/features/html/frames.html +12 -0
  38. data/features/html/hover.html +12 -0
  39. data/features/html/iframes.html +12 -0
  40. data/features/html/images/circle.png +0 -0
  41. data/features/html/images/img_pulpit.jpg +0 -0
  42. data/features/html/images/submit.gif +0 -0
  43. data/features/html/indexed_property.html +52 -0
  44. data/features/html/modal.html +17 -0
  45. data/features/html/modal_1.html +38 -0
  46. data/features/html/modal_2.html +27 -0
  47. data/features/html/movie.mp4 +0 -0
  48. data/features/html/movie.ogg +0 -0
  49. data/features/html/multi_elements.html +144 -0
  50. data/features/html/nested_elements.html +77 -0
  51. data/features/html/nested_frame_1.html +1 -0
  52. data/features/html/nested_frame_2.html +11 -0
  53. data/features/html/nested_frame_3.html +14 -0
  54. data/features/html/nested_frames.html +10 -0
  55. data/features/html/planets.gif +0 -0
  56. data/features/html/static_elements.html +206 -0
  57. data/features/html/success.html +8 -0
  58. data/features/html/sun.gif +0 -0
  59. data/features/html/sun.html +7 -0
  60. data/features/image.feature +50 -0
  61. data/features/indexed_property.feature +98 -0
  62. data/features/javascript.feature +28 -0
  63. data/features/label.feature +46 -0
  64. data/features/link.feature +52 -0
  65. data/features/list_item.feature +36 -0
  66. data/features/modal_dialog.feature +15 -0
  67. data/features/multi_elements.feature +486 -0
  68. data/features/nested_elements.feature +117 -0
  69. data/features/ordered_list.feature +56 -0
  70. data/features/page_level_actions.feature +90 -0
  71. data/features/paragraph.feature +35 -0
  72. data/features/radio_button.feature +58 -0
  73. data/features/radio_button_group.feature +29 -0
  74. data/features/sample-app/public/jquery-1.3.2.js +4376 -0
  75. data/features/sample-app/public/jquery.html +30 -0
  76. data/features/sample-app/public/prototype-1.6.0.3.js +4320 -0
  77. data/features/sample-app/public/prototype.html +35 -0
  78. data/features/sample-app/sample_app.rb +35 -0
  79. data/features/select_list.feature +86 -0
  80. data/features/span.feature +37 -0
  81. data/features/step_definitions/accessor_steps.rb +60 -0
  82. data/features/step_definitions/area_steps.rb +19 -0
  83. data/features/step_definitions/async_steps.rb +83 -0
  84. data/features/step_definitions/audio_steps.rb +27 -0
  85. data/features/step_definitions/button_steps.rb +43 -0
  86. data/features/step_definitions/canvas_steps.rb +15 -0
  87. data/features/step_definitions/check_box_steps.rb +35 -0
  88. data/features/step_definitions/div_steps.rb +19 -0
  89. data/features/step_definitions/element_steps.rb +266 -0
  90. data/features/step_definitions/file_field_steps.rb +19 -0
  91. data/features/step_definitions/form_steps.rb +19 -0
  92. data/features/step_definitions/frames_steps.rb +159 -0
  93. data/features/step_definitions/generic_element_steps.rb +31 -0
  94. data/features/step_definitions/gxt_table_steps.rb +58 -0
  95. data/features/step_definitions/headings_steps.rb +12 -0
  96. data/features/step_definitions/hidden_field_steps.rb +27 -0
  97. data/features/step_definitions/image_steps.rb +27 -0
  98. data/features/step_definitions/indexed_property_steps.rb +129 -0
  99. data/features/step_definitions/javascript_steps.rb +53 -0
  100. data/features/step_definitions/label_steps.rb +19 -0
  101. data/features/step_definitions/link_steps.rb +40 -0
  102. data/features/step_definitions/list_item_steps.rb +19 -0
  103. data/features/step_definitions/modal_dialog_steps.rb +62 -0
  104. data/features/step_definitions/multi_elements_steps.rb +528 -0
  105. data/features/step_definitions/nested_elements_steps.rb +212 -0
  106. data/features/step_definitions/ordered_list_steps.rb +23 -0
  107. data/features/step_definitions/page_level_actions_steps.rb +135 -0
  108. data/features/step_definitions/page_traversal_steps.rb +4 -0
  109. data/features/step_definitions/paragraph_steps.rb +28 -0
  110. data/features/step_definitions/radio_button_group_steps.rb +36 -0
  111. data/features/step_definitions/radio_button_steps.rb +27 -0
  112. data/features/step_definitions/select_list_steps.rb +65 -0
  113. data/features/step_definitions/span_steps.rb +19 -0
  114. data/features/step_definitions/table_cell_steps.rb +15 -0
  115. data/features/step_definitions/table_steps.rb +66 -0
  116. data/features/step_definitions/text_area_steps.rb +35 -0
  117. data/features/step_definitions/text_field_steps.rb +35 -0
  118. data/features/step_definitions/unordered_list_steps.rb +23 -0
  119. data/features/step_definitions/video_steps.rb +45 -0
  120. data/features/support/ajax_text_environment.rb +26 -0
  121. data/features/support/env.rb +8 -0
  122. data/features/support/hooks.rb +8 -0
  123. data/features/support/page.rb +364 -0
  124. data/features/support/persistent_browser.rb +70 -0
  125. data/features/support/targets/firefox14_osx.rb +6 -0
  126. data/features/support/targets/firefox14_windows7.rb +6 -0
  127. data/features/support/url_helper.rb +57 -0
  128. data/features/table.feature +114 -0
  129. data/features/table_cell.feature +45 -0
  130. data/features/text_area.feature +51 -0
  131. data/features/text_field.feature +70 -0
  132. data/features/unordered_list.feature +56 -0
  133. data/features/video.feature +73 -0
  134. data/lib/page-object/accessors.rb +1313 -0
  135. data/lib/page-object/core_ext/string.rb +5 -0
  136. data/lib/page-object/element_locators.rb +21 -0
  137. data/lib/page-object/elements/area.rb +31 -0
  138. data/lib/page-object/elements/audio.rb +9 -0
  139. data/lib/page-object/elements/button.rb +35 -0
  140. data/lib/page-object/elements/canvas.rb +23 -0
  141. data/lib/page-object/elements/check_box.rb +37 -0
  142. data/lib/page-object/elements/div.rb +19 -0
  143. data/lib/page-object/elements/element.rb +226 -0
  144. data/lib/page-object/elements/file_field.rb +38 -0
  145. data/lib/page-object/elements/form.rb +36 -0
  146. data/lib/page-object/elements/heading.rb +15 -0
  147. data/lib/page-object/elements/hidden_field.rb +22 -0
  148. data/lib/page-object/elements/image.rb +36 -0
  149. data/lib/page-object/elements/label.rb +36 -0
  150. data/lib/page-object/elements/link.rb +46 -0
  151. data/lib/page-object/elements/list_item.rb +19 -0
  152. data/lib/page-object/elements/media.rb +45 -0
  153. data/lib/page-object/elements/option.rb +10 -0
  154. data/lib/page-object/elements/ordered_list.rb +50 -0
  155. data/lib/page-object/elements/paragraph.rb +9 -0
  156. data/lib/page-object/elements/radio_button.rb +37 -0
  157. data/lib/page-object/elements/select_list.rb +42 -0
  158. data/lib/page-object/elements/span.rb +19 -0
  159. data/lib/page-object/elements/table.rb +68 -0
  160. data/lib/page-object/elements/table_cell.rb +28 -0
  161. data/lib/page-object/elements/table_row.rb +50 -0
  162. data/lib/page-object/elements/text_area.rb +38 -0
  163. data/lib/page-object/elements/text_field.rb +42 -0
  164. data/lib/page-object/elements/unordered_list.rb +51 -0
  165. data/lib/page-object/elements/video.rb +18 -0
  166. data/lib/page-object/elements.rb +59 -0
  167. data/lib/page-object/indexed_properties.rb +36 -0
  168. data/lib/page-object/javascript/jquery.rb +14 -0
  169. data/lib/page-object/javascript/prototype.rb +14 -0
  170. data/lib/page-object/javascript/yui.rb +19 -0
  171. data/lib/page-object/javascript_framework_facade.rb +78 -0
  172. data/lib/page-object/loads_platform.rb +26 -0
  173. data/lib/page-object/locator_generator.rb +129 -0
  174. data/lib/page-object/nested_elements.rb +17 -0
  175. data/lib/page-object/page_factory.rb +108 -0
  176. data/lib/page-object/page_populator.rb +92 -0
  177. data/lib/page-object/platforms/selenium_webdriver/button.rb +15 -0
  178. data/lib/page-object/platforms/selenium_webdriver/check_box.rb +29 -0
  179. data/lib/page-object/platforms/selenium_webdriver/element.rb +291 -0
  180. data/lib/page-object/platforms/selenium_webdriver/file_field.rb +16 -0
  181. data/lib/page-object/platforms/selenium_webdriver/form.rb +16 -0
  182. data/lib/page-object/platforms/selenium_webdriver/image.rb +28 -0
  183. data/lib/page-object/platforms/selenium_webdriver/label.rb +17 -0
  184. data/lib/page-object/platforms/selenium_webdriver/link.rb +23 -0
  185. data/lib/page-object/platforms/selenium_webdriver/ordered_list.rb +39 -0
  186. data/lib/page-object/platforms/selenium_webdriver/page_object.rb +1136 -0
  187. data/lib/page-object/platforms/selenium_webdriver/radio_button.rb +22 -0
  188. data/lib/page-object/platforms/selenium_webdriver/select_list.rb +93 -0
  189. data/lib/page-object/platforms/selenium_webdriver/surrogate_selenium_element.rb +42 -0
  190. data/lib/page-object/platforms/selenium_webdriver/table.rb +42 -0
  191. data/lib/page-object/platforms/selenium_webdriver/table_row.rb +43 -0
  192. data/lib/page-object/platforms/selenium_webdriver/text_area.rb +17 -0
  193. data/lib/page-object/platforms/selenium_webdriver/text_field.rb +17 -0
  194. data/lib/page-object/platforms/selenium_webdriver/unordered_list.rb +39 -0
  195. data/lib/page-object/platforms/selenium_webdriver.rb +18 -0
  196. data/lib/page-object/platforms/watir_webdriver/check_box.rb +29 -0
  197. data/lib/page-object/platforms/watir_webdriver/element.rb +249 -0
  198. data/lib/page-object/platforms/watir_webdriver/file_field.rb +16 -0
  199. data/lib/page-object/platforms/watir_webdriver/form.rb +16 -0
  200. data/lib/page-object/platforms/watir_webdriver/image.rb +22 -0
  201. data/lib/page-object/platforms/watir_webdriver/label.rb +17 -0
  202. data/lib/page-object/platforms/watir_webdriver/link.rb +15 -0
  203. data/lib/page-object/platforms/watir_webdriver/ordered_list.rb +35 -0
  204. data/lib/page-object/platforms/watir_webdriver/page_object.rb +1029 -0
  205. data/lib/page-object/platforms/watir_webdriver/radio_button.rb +22 -0
  206. data/lib/page-object/platforms/watir_webdriver/select_list.rb +74 -0
  207. data/lib/page-object/platforms/watir_webdriver/table.rb +38 -0
  208. data/lib/page-object/platforms/watir_webdriver/table_row.rb +37 -0
  209. data/lib/page-object/platforms/watir_webdriver/text_area.rb +23 -0
  210. data/lib/page-object/platforms/watir_webdriver/text_field.rb +16 -0
  211. data/lib/page-object/platforms/watir_webdriver/unordered_list.rb +36 -0
  212. data/lib/page-object/platforms/watir_webdriver.rb +18 -0
  213. data/lib/page-object/platforms.rb +18 -0
  214. data/lib/page-object/version.rb +4 -0
  215. data/lib/page-object/widgets.rb +133 -0
  216. data/lib/page-object.rb +408 -0
  217. data/meeane-page-object.gemspec +32 -0
  218. data/pageobject.gems +1 -0
  219. data/spec/page-object/element_locators_spec.rb +1065 -0
  220. data/spec/page-object/elements/area_spec.rb +45 -0
  221. data/spec/page-object/elements/button_spec.rb +50 -0
  222. data/spec/page-object/elements/canvas_spec.rb +40 -0
  223. data/spec/page-object/elements/check_box_spec.rb +49 -0
  224. data/spec/page-object/elements/div_spec.rb +28 -0
  225. data/spec/page-object/elements/element_spec.rb +114 -0
  226. data/spec/page-object/elements/file_field_spec.rb +39 -0
  227. data/spec/page-object/elements/form_spec.rb +28 -0
  228. data/spec/page-object/elements/heading_spec.rb +48 -0
  229. data/spec/page-object/elements/hidden_field_spec.rb +28 -0
  230. data/spec/page-object/elements/image_spec.rb +66 -0
  231. data/spec/page-object/elements/label_spec.rb +29 -0
  232. data/spec/page-object/elements/link_spec.rb +49 -0
  233. data/spec/page-object/elements/list_item_spec.rb +28 -0
  234. data/spec/page-object/elements/nested_element_spec.rb +254 -0
  235. data/spec/page-object/elements/option_spec.rb +11 -0
  236. data/spec/page-object/elements/ordered_list_spec.rb +94 -0
  237. data/spec/page-object/elements/paragraph_spec.rb +28 -0
  238. data/spec/page-object/elements/select_list_spec.rb +142 -0
  239. data/spec/page-object/elements/selenium/radio_button_spec.rb +44 -0
  240. data/spec/page-object/elements/selenium/text_field_spec.rb +49 -0
  241. data/spec/page-object/elements/selenium_element_spec.rb +172 -0
  242. data/spec/page-object/elements/span_spec.rb +26 -0
  243. data/spec/page-object/elements/table_cell_spec.rb +21 -0
  244. data/spec/page-object/elements/table_row_spec.rb +70 -0
  245. data/spec/page-object/elements/table_spec.rb +98 -0
  246. data/spec/page-object/elements/text_area_spec.rb +39 -0
  247. data/spec/page-object/elements/unordered_list_spec.rb +95 -0
  248. data/spec/page-object/elements/watir_element_spec.rb +142 -0
  249. data/spec/page-object/javascript_framework_facade_spec.rb +61 -0
  250. data/spec/page-object/loads_platform_spec.rb +53 -0
  251. data/spec/page-object/page-object_spec.rb +405 -0
  252. data/spec/page-object/page_factory_spec.rb +256 -0
  253. data/spec/page-object/page_populator_spec.rb +122 -0
  254. data/spec/page-object/platforms/selenium_webdriver/selenium_page_object_spec.rb +68 -0
  255. data/spec/page-object/platforms/selenium_webdriver_spec.rb +29 -0
  256. data/spec/page-object/platforms/watir_webdriver/watir_page_object_spec.rb +29 -0
  257. data/spec/page-object/platforms/watir_webdriver_spec.rb +9 -0
  258. data/spec/page-object/selenium_accessors_spec.rb +589 -0
  259. data/spec/page-object/watir_accessors_spec.rb +1107 -0
  260. data/spec/page-object/widget_spec.rb +226 -0
  261. data/spec/spec_helper.rb +44 -0
  262. metadata +404 -0
@@ -0,0 +1,129 @@
1
+ class IndexedPropertyPage
2
+ include PageObject
3
+
4
+ indexed_property :table, [[:text_field, :text_table, {:id => 'table[%s].text'}],
5
+ [:text_field, :text_name, {:name => 'tableName[%s].text'}],
6
+ [:radio_button, :radio, {:id => 'table[%s].radio'}],
7
+ [:checkbox, :check, {:id => 'table[%s].check'}],
8
+ [:text_area, :area, {:id => 'table[%s].area'}],
9
+ [:button, :button, {:id => 'table[%s].button'}],
10
+ [:div, :content, {:id => 'table[%s].content'}]]
11
+
12
+ indexed_property :nottable, [[:text_field, :text_nottable, {:id => 'nottable[%s].text'}]]
13
+
14
+ indexed_property :other_table, [
15
+ [:text_field, :text_table, {:id => 'other_table[%s].text'}],
16
+ [:div, :content, {:id => 'other_table[%s].content'}]
17
+ ]
18
+
19
+ end
20
+
21
+ def page
22
+ @page ||= IndexedPropertyPage.new(@browser)
23
+ end
24
+
25
+ Given /^I am on the indexed property page$/ do
26
+ # @page = IndexedPropertyPage.new(@browser)
27
+ page.navigate_to(UrlHelper.indexed)
28
+ end
29
+
30
+ When /^I search for the elements for index "([^\"]*)"$/ do |index|
31
+ @index = index
32
+ end
33
+
34
+ Then /^I type "([^\"]*)" into the table's indexed text field by id$/ do |val|
35
+ page.table[@index].text_table = val
36
+ end
37
+
38
+ Then /^The table's indexed text field by id should contain "([^\"]*)"$/ do |val|
39
+ page.table[@index].text_table.should == val
40
+ end
41
+
42
+ Then /^I type "([^\"]*)" into the table's indexed text field by name$/ do |val|
43
+ page.table[@index].text_name = val
44
+ end
45
+
46
+ Then /^The table's indexed text field by name should contain "([^\"]*)"$/ do |val|
47
+ page.table[@index].text_name.should == val
48
+ end
49
+
50
+ Then /^I select the indexed radio button$/ do
51
+ page.table[@index].select_radio
52
+ end
53
+
54
+ Then /^The indexed radio button should be selected$/ do
55
+ page.table[@index].radio_selected?.should == true
56
+ end
57
+
58
+ Then /^I check the indexed checkbox$/ do
59
+ page.table[@index].check_check
60
+ end
61
+
62
+ Then /^The indexed checkbox should be checked$/ do
63
+ page.table[@index].check_checked?.should == true
64
+ end
65
+
66
+ Then /^I type "([^\"]*)" into the table's indexed text area$/ do |val|
67
+ page.table[@index].area = val
68
+ end
69
+
70
+ Then /^The table's indexed text area should contain "([^\"]*)"$/ do |val|
71
+ page.table[@index].area.should == val
72
+ end
73
+
74
+ Then /^I should see that the indexed button exists$/ do
75
+ page.table[@index].button?.should == true
76
+ end
77
+
78
+ Then /^I should be able to click the indexed button$/ do
79
+ page.table[@index].button
80
+ end
81
+
82
+ Then /^I type "([^\"]*)" into the regular indexed text field by id$/ do |val|
83
+ page.nottable[@index].text_nottable = val
84
+ end
85
+
86
+ Then /^The regular indexed text field by id should contain "([^\"]*)"$/ do |val|
87
+ page.nottable[@index].text_nottable.should == val
88
+ end
89
+
90
+
91
+ When(/^I search for an element not on my indexed property but on another$/) do
92
+ @index = 'foo'
93
+ end
94
+
95
+ Then(/^I should see that the element doesn't exist$/) do
96
+ expect { page.other_table[@index].radio_element.value }.to raise_error(NoMethodError)
97
+ end
98
+
99
+ When(/^I search for an element that is on an indexed property$/) do
100
+ page.table['foo'].radio_element
101
+ end
102
+
103
+ And(/^I search for the element on another indexed property it is not on$/) do
104
+ @index = 'foo'
105
+ end
106
+
107
+ When(/^I search using the index which is not on another indexed property$/) do
108
+ @index = '123'
109
+ end
110
+
111
+ Then(/^I should see that the element doesn't exist for that index/) do
112
+ expect { page.other_table[@index].text_table_element.text }.to raise_error /unable to locate element|Selenium::WebDriver::Error::NoSuchElementError/
113
+ end
114
+
115
+ When(/^I search for an element by an index on an indexed property$/) do
116
+ page.table['123'].text_table_element.html
117
+ end
118
+
119
+ And(/^I search using an index which is on another indexed property$/) do
120
+ @index = 'bar'
121
+ end
122
+
123
+ Then(/^I should see the content of the element on the second indexed property$/) do
124
+ expect(page.other_table['bar'].content).to eq 'bar!'
125
+ end
126
+
127
+ When(/^I search for an element with text by an index on an indexed property$/) do
128
+ expect(page.table['123'].content).to eq '123!'
129
+ end
@@ -0,0 +1,53 @@
1
+ class JavascriptPage
2
+ include PageObject
3
+
4
+ text_field(:expression, :id => 'calculator-expression')
5
+ text_field(:results, :id => 'calculator-result')
6
+ button(:compute, :value => 'Compute')
7
+
8
+ end
9
+
10
+ def build_url(page)
11
+ target = ENV['BROWSER']
12
+ return "http://localhost:4567/#{page}" if target.nil? or target.include? 'local'
13
+ "http://ec2-107-22-131-88.compute-1.amazonaws.com:4567/#{page}"
14
+ end
15
+
16
+ Given /^I am on jQuery example page$/ do
17
+ PageObject.javascript_framework = :jquery
18
+ @page = JavascriptPage.new(@browser)
19
+ @page.navigate_to build_url("jquery.html")
20
+ end
21
+
22
+ Given /^I am on the Prototype example page$/ do
23
+ PageObject.javascript_framework = :prototype
24
+ @page = JavascriptPage.new(@browser)
25
+ @page.navigate_to build_url('prototype.html')
26
+ end
27
+
28
+ When /^I ask to compute "([^\"]*)"$/ do |expression|
29
+ @page.expression = expression
30
+ @page.compute
31
+ end
32
+
33
+ Then /^I should be able to wait for the answer "([^\"]*)"$/ do |answer|
34
+ @page.wait_for_ajax
35
+ @page.results.should == answer
36
+ end
37
+
38
+ Given /^I execute the javascript "([^\"]*)"$/ do |script|
39
+ @answer = @page.execute_script script
40
+ end
41
+
42
+ Given /^I execute the javascript "([^\"]*)" with an argument of "([^\"]*)"$/ do |script, arg|
43
+ @answer = @page.execute_script script, arg
44
+ end
45
+
46
+ Given /^I execute the javascript "([^\"]*)" with a text field argument$/ do |script|
47
+ text_field = @page.text_field_element(:id => 'text_field_id')
48
+ @page.execute_script(script, text_field)
49
+ end
50
+
51
+ Then /^I should get the answer "([^\"]*)"$/ do |answer|
52
+ @answer.should == answer.to_i
53
+ end
@@ -0,0 +1,19 @@
1
+ When /^I get the text from the label$/ do
2
+ @text = @page.label_id
3
+ end
4
+
5
+ When /^I search for the label by "([^\"]*)"$/ do |how|
6
+ @text = @page.send "label_#{how}".to_sym
7
+ end
8
+
9
+ When /^I search for the label by "(.*)" and "(.*)"$/ do |param1, param2|
10
+ @text = @page.send "label_#{param1}_#{param2}".to_sym
11
+ end
12
+
13
+ When /^I get the text from a label while the script is executing$/ do
14
+ @text = @page.label_element(:id => 'label_id').text
15
+ end
16
+
17
+ Then /^I should see that the label exists$/ do
18
+ @page.label_id?.should be_true
19
+ end
@@ -0,0 +1,40 @@
1
+ When /^I select the link labeled "([^\"]*)"$/ do |text|
2
+ @page.google_search_id
3
+ end
4
+
5
+ When /^I search for the link by "([^\"]*)"$/ do |how|
6
+ @how = how
7
+ end
8
+
9
+ Then /^I should be able to select the link$/ do
10
+ @page.send "google_search_#{@how}".to_sym
11
+ end
12
+
13
+ When /^I select a link labeled "([^"]*)" and index "([^"]*)"$/ do |label, index|
14
+ @page.send "#{label.downcase}#{index}".to_sym
15
+ end
16
+
17
+ When /^I select a link while the script is executing$/ do
18
+ link = @page.link_element(:id => 'link_id')
19
+ link.click
20
+ end
21
+
22
+ Then(/^I should see that the link exists$/) do
23
+ @page.link_id?.should == true
24
+ end
25
+
26
+ When(/^I get the href for the link$/) do
27
+ @href = @page.google_search_id_element.href
28
+ end
29
+
30
+ Then(/^I should know it was "(.*?)"$/) do |href|
31
+ @href.should include href
32
+ end
33
+
34
+ When(/^I get the link using the href success$/) do
35
+ @link = @page.link_element(:href => /succ.*html/)
36
+ end
37
+
38
+ Then(/^I should be able to click the link$/) do
39
+ @link.click
40
+ end
@@ -0,0 +1,19 @@
1
+ When /^I get the text from the list item$/ do
2
+ @text = @page.li_id
3
+ end
4
+
5
+ When /^I search for the list item by "([^\"]*)"$/ do |how|
6
+ @text = @page.send "li_#{how}"
7
+ end
8
+
9
+ When /^I search for the list item by "([^"]*)" and "([^"]*)"$/ do |param1, param2|
10
+ @text = @page.send "li_#{param1}_#{param2}"
11
+ end
12
+
13
+ When /^I search for the list item while the script is executing$/ do
14
+ @text = @page.list_item_element(:id => 'li_id').text
15
+ end
16
+
17
+ Then /^I should see that the list item exists$/ do
18
+ @page.li_id?.should == true
19
+ end
@@ -0,0 +1,62 @@
1
+ class ModalPage
2
+ include PageObject
3
+
4
+ button(:launch_modal, :id => 'launch_modal_button')
5
+ end
6
+
7
+ class ModalDialog
8
+ include PageObject
9
+
10
+ button(:close_window, :id => 'close_window')
11
+ button(:close_window_with_delay, :id => 'delayed_close')
12
+ button(:launch_another_modal, :id => 'launch_modal_button')
13
+ end
14
+
15
+ class AnotherModalDialog
16
+ include PageObject
17
+
18
+ button(:close_window, :id => 'close_window2')
19
+ button(:close_window_with_delay, :id => 'delayed_close2')
20
+ end
21
+
22
+
23
+ Given /^I am on the modal page$/ do
24
+ ModalPage.new(@browser).navigate_to(UrlHelper.modal)
25
+ end
26
+
27
+ When /^I open a modal dialog$/ do
28
+ page = ModalPage.new(@browser)
29
+ page.modal_dialog do
30
+ page.launch_modal
31
+ end
32
+ end
33
+
34
+ Then /^I should be able to close the modal$/ do
35
+ dialog = ModalDialog.new(@browser)
36
+ dialog.attach_to_window(:title => 'Modal 1') do
37
+ dialog.close_window
38
+ end
39
+ end
40
+
41
+ When /^I open another modal dialog from that one$/ do
42
+ dialog = ModalDialog.new(@browser)
43
+ dialog.attach_to_window(:title => 'Modal 1') #do
44
+ dialog.modal_dialog #do
45
+ # dialog.launch_another_modal
46
+ # end
47
+ dialog.launch_another_modal
48
+ # end
49
+ end
50
+
51
+ Then /^I should be able to close both modals$/ do
52
+ pending
53
+ # another = AnotherModalDialog.new(@browser)
54
+ # another.attach_to_window(:title => 'Modal 2') do
55
+ # another.close_window
56
+ # end
57
+
58
+ # dialog = ModalDialog.new(@browser)
59
+ # dialog.attach_to_window(:title => 'Modal 1') do
60
+ # dialog.close_window
61
+ # end
62
+ end