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.
- checksums.yaml +7 -0
- data/.gitignore +7 -0
- data/.rspec +2 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +10 -0
- data/ChangeLog +790 -0
- data/Gemfile +13 -0
- data/Guardfile +20 -0
- data/LICENSE +20 -0
- data/README.md +141 -0
- data/Rakefile +35 -0
- data/cucumber.yml +10 -0
- data/features/area.feature +35 -0
- data/features/async.feature +30 -0
- data/features/audio.feature +68 -0
- data/features/button.feature +87 -0
- data/features/canvas.feature +37 -0
- data/features/check_box.feature +55 -0
- data/features/div.feature +45 -0
- data/features/element.feature +322 -0
- data/features/file_field.feature +40 -0
- data/features/form.feature +43 -0
- data/features/frames.feature +75 -0
- data/features/generic_elements.feature +29 -0
- data/features/gxt_table_extension.feature +24 -0
- data/features/headings.feature +97 -0
- data/features/hidden_field.feature +45 -0
- data/features/html/04-Death_Becomes_Fur.mp4 +0 -0
- data/features/html/04-Death_Becomes_Fur.oga +0 -0
- data/features/html/async.html +36 -0
- data/features/html/double_click.html +13 -0
- data/features/html/failure.html +8 -0
- data/features/html/frame_1.html +18 -0
- data/features/html/frame_2.html +16 -0
- data/features/html/frame_3.html +14 -0
- data/features/html/frames.html +12 -0
- data/features/html/hover.html +12 -0
- data/features/html/iframes.html +12 -0
- data/features/html/images/circle.png +0 -0
- data/features/html/images/img_pulpit.jpg +0 -0
- data/features/html/images/submit.gif +0 -0
- data/features/html/indexed_property.html +52 -0
- data/features/html/modal.html +17 -0
- data/features/html/modal_1.html +38 -0
- data/features/html/modal_2.html +27 -0
- data/features/html/movie.mp4 +0 -0
- data/features/html/movie.ogg +0 -0
- data/features/html/multi_elements.html +144 -0
- data/features/html/nested_elements.html +77 -0
- data/features/html/nested_frame_1.html +1 -0
- data/features/html/nested_frame_2.html +11 -0
- data/features/html/nested_frame_3.html +14 -0
- data/features/html/nested_frames.html +10 -0
- data/features/html/planets.gif +0 -0
- data/features/html/static_elements.html +206 -0
- data/features/html/success.html +8 -0
- data/features/html/sun.gif +0 -0
- data/features/html/sun.html +7 -0
- data/features/image.feature +50 -0
- data/features/indexed_property.feature +98 -0
- data/features/javascript.feature +28 -0
- data/features/label.feature +46 -0
- data/features/link.feature +52 -0
- data/features/list_item.feature +36 -0
- data/features/modal_dialog.feature +15 -0
- data/features/multi_elements.feature +486 -0
- data/features/nested_elements.feature +117 -0
- data/features/ordered_list.feature +56 -0
- data/features/page_level_actions.feature +90 -0
- data/features/paragraph.feature +35 -0
- data/features/radio_button.feature +58 -0
- data/features/radio_button_group.feature +29 -0
- data/features/sample-app/public/jquery-1.3.2.js +4376 -0
- data/features/sample-app/public/jquery.html +30 -0
- data/features/sample-app/public/prototype-1.6.0.3.js +4320 -0
- data/features/sample-app/public/prototype.html +35 -0
- data/features/sample-app/sample_app.rb +35 -0
- data/features/select_list.feature +86 -0
- data/features/span.feature +37 -0
- data/features/step_definitions/accessor_steps.rb +60 -0
- data/features/step_definitions/area_steps.rb +19 -0
- data/features/step_definitions/async_steps.rb +83 -0
- data/features/step_definitions/audio_steps.rb +27 -0
- data/features/step_definitions/button_steps.rb +43 -0
- data/features/step_definitions/canvas_steps.rb +15 -0
- data/features/step_definitions/check_box_steps.rb +35 -0
- data/features/step_definitions/div_steps.rb +19 -0
- data/features/step_definitions/element_steps.rb +266 -0
- data/features/step_definitions/file_field_steps.rb +19 -0
- data/features/step_definitions/form_steps.rb +19 -0
- data/features/step_definitions/frames_steps.rb +159 -0
- data/features/step_definitions/generic_element_steps.rb +31 -0
- data/features/step_definitions/gxt_table_steps.rb +58 -0
- data/features/step_definitions/headings_steps.rb +12 -0
- data/features/step_definitions/hidden_field_steps.rb +27 -0
- data/features/step_definitions/image_steps.rb +27 -0
- data/features/step_definitions/indexed_property_steps.rb +129 -0
- data/features/step_definitions/javascript_steps.rb +53 -0
- data/features/step_definitions/label_steps.rb +19 -0
- data/features/step_definitions/link_steps.rb +40 -0
- data/features/step_definitions/list_item_steps.rb +19 -0
- data/features/step_definitions/modal_dialog_steps.rb +62 -0
- data/features/step_definitions/multi_elements_steps.rb +528 -0
- data/features/step_definitions/nested_elements_steps.rb +212 -0
- data/features/step_definitions/ordered_list_steps.rb +23 -0
- data/features/step_definitions/page_level_actions_steps.rb +135 -0
- data/features/step_definitions/page_traversal_steps.rb +4 -0
- data/features/step_definitions/paragraph_steps.rb +28 -0
- data/features/step_definitions/radio_button_group_steps.rb +36 -0
- data/features/step_definitions/radio_button_steps.rb +27 -0
- data/features/step_definitions/select_list_steps.rb +65 -0
- data/features/step_definitions/span_steps.rb +19 -0
- data/features/step_definitions/table_cell_steps.rb +15 -0
- data/features/step_definitions/table_steps.rb +66 -0
- data/features/step_definitions/text_area_steps.rb +35 -0
- data/features/step_definitions/text_field_steps.rb +35 -0
- data/features/step_definitions/unordered_list_steps.rb +23 -0
- data/features/step_definitions/video_steps.rb +45 -0
- data/features/support/ajax_text_environment.rb +26 -0
- data/features/support/env.rb +8 -0
- data/features/support/hooks.rb +8 -0
- data/features/support/page.rb +364 -0
- data/features/support/persistent_browser.rb +70 -0
- data/features/support/targets/firefox14_osx.rb +6 -0
- data/features/support/targets/firefox14_windows7.rb +6 -0
- data/features/support/url_helper.rb +57 -0
- data/features/table.feature +114 -0
- data/features/table_cell.feature +45 -0
- data/features/text_area.feature +51 -0
- data/features/text_field.feature +70 -0
- data/features/unordered_list.feature +56 -0
- data/features/video.feature +73 -0
- data/lib/page-object/accessors.rb +1313 -0
- data/lib/page-object/core_ext/string.rb +5 -0
- data/lib/page-object/element_locators.rb +21 -0
- data/lib/page-object/elements/area.rb +31 -0
- data/lib/page-object/elements/audio.rb +9 -0
- data/lib/page-object/elements/button.rb +35 -0
- data/lib/page-object/elements/canvas.rb +23 -0
- data/lib/page-object/elements/check_box.rb +37 -0
- data/lib/page-object/elements/div.rb +19 -0
- data/lib/page-object/elements/element.rb +226 -0
- data/lib/page-object/elements/file_field.rb +38 -0
- data/lib/page-object/elements/form.rb +36 -0
- data/lib/page-object/elements/heading.rb +15 -0
- data/lib/page-object/elements/hidden_field.rb +22 -0
- data/lib/page-object/elements/image.rb +36 -0
- data/lib/page-object/elements/label.rb +36 -0
- data/lib/page-object/elements/link.rb +46 -0
- data/lib/page-object/elements/list_item.rb +19 -0
- data/lib/page-object/elements/media.rb +45 -0
- data/lib/page-object/elements/option.rb +10 -0
- data/lib/page-object/elements/ordered_list.rb +50 -0
- data/lib/page-object/elements/paragraph.rb +9 -0
- data/lib/page-object/elements/radio_button.rb +37 -0
- data/lib/page-object/elements/select_list.rb +42 -0
- data/lib/page-object/elements/span.rb +19 -0
- data/lib/page-object/elements/table.rb +68 -0
- data/lib/page-object/elements/table_cell.rb +28 -0
- data/lib/page-object/elements/table_row.rb +50 -0
- data/lib/page-object/elements/text_area.rb +38 -0
- data/lib/page-object/elements/text_field.rb +42 -0
- data/lib/page-object/elements/unordered_list.rb +51 -0
- data/lib/page-object/elements/video.rb +18 -0
- data/lib/page-object/elements.rb +59 -0
- data/lib/page-object/indexed_properties.rb +36 -0
- data/lib/page-object/javascript/jquery.rb +14 -0
- data/lib/page-object/javascript/prototype.rb +14 -0
- data/lib/page-object/javascript/yui.rb +19 -0
- data/lib/page-object/javascript_framework_facade.rb +78 -0
- data/lib/page-object/loads_platform.rb +26 -0
- data/lib/page-object/locator_generator.rb +129 -0
- data/lib/page-object/nested_elements.rb +17 -0
- data/lib/page-object/page_factory.rb +108 -0
- data/lib/page-object/page_populator.rb +92 -0
- data/lib/page-object/platforms/selenium_webdriver/button.rb +15 -0
- data/lib/page-object/platforms/selenium_webdriver/check_box.rb +29 -0
- data/lib/page-object/platforms/selenium_webdriver/element.rb +291 -0
- data/lib/page-object/platforms/selenium_webdriver/file_field.rb +16 -0
- data/lib/page-object/platforms/selenium_webdriver/form.rb +16 -0
- data/lib/page-object/platforms/selenium_webdriver/image.rb +28 -0
- data/lib/page-object/platforms/selenium_webdriver/label.rb +17 -0
- data/lib/page-object/platforms/selenium_webdriver/link.rb +23 -0
- data/lib/page-object/platforms/selenium_webdriver/ordered_list.rb +39 -0
- data/lib/page-object/platforms/selenium_webdriver/page_object.rb +1136 -0
- data/lib/page-object/platforms/selenium_webdriver/radio_button.rb +22 -0
- data/lib/page-object/platforms/selenium_webdriver/select_list.rb +93 -0
- data/lib/page-object/platforms/selenium_webdriver/surrogate_selenium_element.rb +42 -0
- data/lib/page-object/platforms/selenium_webdriver/table.rb +42 -0
- data/lib/page-object/platforms/selenium_webdriver/table_row.rb +43 -0
- data/lib/page-object/platforms/selenium_webdriver/text_area.rb +17 -0
- data/lib/page-object/platforms/selenium_webdriver/text_field.rb +17 -0
- data/lib/page-object/platforms/selenium_webdriver/unordered_list.rb +39 -0
- data/lib/page-object/platforms/selenium_webdriver.rb +18 -0
- data/lib/page-object/platforms/watir_webdriver/check_box.rb +29 -0
- data/lib/page-object/platforms/watir_webdriver/element.rb +249 -0
- data/lib/page-object/platforms/watir_webdriver/file_field.rb +16 -0
- data/lib/page-object/platforms/watir_webdriver/form.rb +16 -0
- data/lib/page-object/platforms/watir_webdriver/image.rb +22 -0
- data/lib/page-object/platforms/watir_webdriver/label.rb +17 -0
- data/lib/page-object/platforms/watir_webdriver/link.rb +15 -0
- data/lib/page-object/platforms/watir_webdriver/ordered_list.rb +35 -0
- data/lib/page-object/platforms/watir_webdriver/page_object.rb +1029 -0
- data/lib/page-object/platforms/watir_webdriver/radio_button.rb +22 -0
- data/lib/page-object/platforms/watir_webdriver/select_list.rb +74 -0
- data/lib/page-object/platforms/watir_webdriver/table.rb +38 -0
- data/lib/page-object/platforms/watir_webdriver/table_row.rb +37 -0
- data/lib/page-object/platforms/watir_webdriver/text_area.rb +23 -0
- data/lib/page-object/platforms/watir_webdriver/text_field.rb +16 -0
- data/lib/page-object/platforms/watir_webdriver/unordered_list.rb +36 -0
- data/lib/page-object/platforms/watir_webdriver.rb +18 -0
- data/lib/page-object/platforms.rb +18 -0
- data/lib/page-object/version.rb +4 -0
- data/lib/page-object/widgets.rb +133 -0
- data/lib/page-object.rb +408 -0
- data/meeane-page-object.gemspec +32 -0
- data/pageobject.gems +1 -0
- data/spec/page-object/element_locators_spec.rb +1065 -0
- data/spec/page-object/elements/area_spec.rb +45 -0
- data/spec/page-object/elements/button_spec.rb +50 -0
- data/spec/page-object/elements/canvas_spec.rb +40 -0
- data/spec/page-object/elements/check_box_spec.rb +49 -0
- data/spec/page-object/elements/div_spec.rb +28 -0
- data/spec/page-object/elements/element_spec.rb +114 -0
- data/spec/page-object/elements/file_field_spec.rb +39 -0
- data/spec/page-object/elements/form_spec.rb +28 -0
- data/spec/page-object/elements/heading_spec.rb +48 -0
- data/spec/page-object/elements/hidden_field_spec.rb +28 -0
- data/spec/page-object/elements/image_spec.rb +66 -0
- data/spec/page-object/elements/label_spec.rb +29 -0
- data/spec/page-object/elements/link_spec.rb +49 -0
- data/spec/page-object/elements/list_item_spec.rb +28 -0
- data/spec/page-object/elements/nested_element_spec.rb +254 -0
- data/spec/page-object/elements/option_spec.rb +11 -0
- data/spec/page-object/elements/ordered_list_spec.rb +94 -0
- data/spec/page-object/elements/paragraph_spec.rb +28 -0
- data/spec/page-object/elements/select_list_spec.rb +142 -0
- data/spec/page-object/elements/selenium/radio_button_spec.rb +44 -0
- data/spec/page-object/elements/selenium/text_field_spec.rb +49 -0
- data/spec/page-object/elements/selenium_element_spec.rb +172 -0
- data/spec/page-object/elements/span_spec.rb +26 -0
- data/spec/page-object/elements/table_cell_spec.rb +21 -0
- data/spec/page-object/elements/table_row_spec.rb +70 -0
- data/spec/page-object/elements/table_spec.rb +98 -0
- data/spec/page-object/elements/text_area_spec.rb +39 -0
- data/spec/page-object/elements/unordered_list_spec.rb +95 -0
- data/spec/page-object/elements/watir_element_spec.rb +142 -0
- data/spec/page-object/javascript_framework_facade_spec.rb +61 -0
- data/spec/page-object/loads_platform_spec.rb +53 -0
- data/spec/page-object/page-object_spec.rb +405 -0
- data/spec/page-object/page_factory_spec.rb +256 -0
- data/spec/page-object/page_populator_spec.rb +122 -0
- data/spec/page-object/platforms/selenium_webdriver/selenium_page_object_spec.rb +68 -0
- data/spec/page-object/platforms/selenium_webdriver_spec.rb +29 -0
- data/spec/page-object/platforms/watir_webdriver/watir_page_object_spec.rb +29 -0
- data/spec/page-object/platforms/watir_webdriver_spec.rb +9 -0
- data/spec/page-object/selenium_accessors_spec.rb +589 -0
- data/spec/page-object/watir_accessors_spec.rb +1107 -0
- data/spec/page-object/widget_spec.rb +226 -0
- data/spec/spec_helper.rb +44 -0
- metadata +404 -0
@@ -0,0 +1,212 @@
|
|
1
|
+
class NestedElementsPage
|
2
|
+
include PageObject
|
3
|
+
|
4
|
+
div(:outer_div, :id => 'div_id')
|
5
|
+
link(:nested_link) { |page| page.outer_div_element.link_element }
|
6
|
+
button(:nested_button) { |page| page.outer_div_element.button_element }
|
7
|
+
text_field(:nested_text_field) { |page| page.outer_div_element.text_field_element }
|
8
|
+
hidden_field(:nested_hidden_field) { |page| page.outer_div_element.hidden_field_element }
|
9
|
+
text_area(:nested_text_area) { |page| page.outer_div_element.text_area_element }
|
10
|
+
select_list(:nested_select_list) { |page| page.outer_div_element.select_list_element }
|
11
|
+
checkbox(:nested_checkbox) { |page| page.outer_div_element.checkbox_element }
|
12
|
+
radio_button(:nested_radio_button) { |page| page.outer_div_element.radio_button_element }
|
13
|
+
div(:nested_div) { |page| page.outer_div_element.div_element }
|
14
|
+
span(:nested_span) { |page| page.outer_div_element.span_element }
|
15
|
+
table(:nested_table) { |page| page.outer_div_element.table_element }
|
16
|
+
cell(:nested_cell) { |page| page.nested_table_element.cell_element(:index => 1) }
|
17
|
+
image(:nested_image) { |page| page.outer_div_element.image_element }
|
18
|
+
form(:nested_form) { |page| page.outer_div_element.form_element }
|
19
|
+
ordered_list(:nested_ordered_list) { |page| page.outer_div_element.ordered_list_element }
|
20
|
+
unordered_list(:nested_unordered_list) { |page| page.outer_div_element.unordered_list_element }
|
21
|
+
list_item(:nested_list_item) { |page| page.nested_ordered_list_element.list_item_element }
|
22
|
+
h1(:nested_h1) { |page| page.outer_div_element.h1_element}
|
23
|
+
h2(:nested_h2) { |page| page.outer_div_element.h2_element }
|
24
|
+
h3(:nested_h3) { |page| page.outer_div_element.h3_element }
|
25
|
+
h4(:nested_h4) { |page| page.outer_div_element.h4_element }
|
26
|
+
h5(:nested_h5) { |page| page.outer_div_element.h5_element }
|
27
|
+
h6(:nested_h6) { |page| page.outer_div_element.h6_element }
|
28
|
+
paragraph(:nested_paragraph) { |page| page.outer_div_element.paragraph_element }
|
29
|
+
file_field(:nested_file_field) { |page| page.outer_div_element.file_field_element }
|
30
|
+
|
31
|
+
unordered_list(:outer_list, :id => 'outer')
|
32
|
+
ordered_list(:ordered_outer, :id => 'ol-outer')
|
33
|
+
end
|
34
|
+
|
35
|
+
Given /^I am on the nested elements page$/ do
|
36
|
+
@page = NestedElementsPage.new(@browser)
|
37
|
+
@page.navigate_to(UrlHelper.nested_elements)
|
38
|
+
end
|
39
|
+
|
40
|
+
When /^I search for a link located in a div$/ do
|
41
|
+
@link = @page.nested_link_element
|
42
|
+
end
|
43
|
+
|
44
|
+
Then /^I should be able to click the nested link$/ do
|
45
|
+
@link.click
|
46
|
+
end
|
47
|
+
|
48
|
+
When /^I search for a button located in a div$/ do
|
49
|
+
@button = @page.nested_button_element
|
50
|
+
end
|
51
|
+
|
52
|
+
Then /^I should be able to click the nested button$/ do
|
53
|
+
@button.click
|
54
|
+
end
|
55
|
+
|
56
|
+
When /^I search for a text field located in a div$/ do
|
57
|
+
@text_field = @page.nested_text_field_element
|
58
|
+
end
|
59
|
+
|
60
|
+
Then /^I should be able to type "([^\"]*)" in the nested text field$/ do |value|
|
61
|
+
@text_field.value = value
|
62
|
+
end
|
63
|
+
|
64
|
+
When /^I search for a hidden field located in a div$/ do
|
65
|
+
@hidden_field = @page.nested_hidden_field_element
|
66
|
+
end
|
67
|
+
|
68
|
+
Then /^I should be able to see that the nested hidden field contains "([^\"]*)"$/ do |value|
|
69
|
+
@hidden_field.value.should == value
|
70
|
+
end
|
71
|
+
|
72
|
+
When /^I search for a text area located in a div$/ do
|
73
|
+
@text_area = @page.nested_text_area_element
|
74
|
+
end
|
75
|
+
|
76
|
+
Then /^I should be able to type "([^\"]*)" in the nested text area$/ do |value|
|
77
|
+
@text_area.value = value
|
78
|
+
end
|
79
|
+
|
80
|
+
When /^I search for a select list located in a div$/ do
|
81
|
+
@select_list = @page.nested_select_list_element
|
82
|
+
end
|
83
|
+
|
84
|
+
Then /^I should be able to select "([^\"]*)" in the nested select list$/ do |value|
|
85
|
+
@select_list.select value
|
86
|
+
end
|
87
|
+
|
88
|
+
When /^I search for a checkbox located in a div$/ do
|
89
|
+
@checkbox = @page.nested_checkbox_element
|
90
|
+
end
|
91
|
+
|
92
|
+
Then /^I should be able to check the nested checkbox$/ do
|
93
|
+
@checkbox.check
|
94
|
+
end
|
95
|
+
|
96
|
+
When /^I search for a radio button located in a div$/ do
|
97
|
+
@radio = @page.nested_radio_button_element
|
98
|
+
end
|
99
|
+
|
100
|
+
Then /^I should be able to select the nested radio button$/ do
|
101
|
+
@radio.select
|
102
|
+
end
|
103
|
+
|
104
|
+
When /^I search for a div located in a div$/ do
|
105
|
+
@div = @page.nested_div_element
|
106
|
+
end
|
107
|
+
|
108
|
+
Then /^I should see the text "([^\"]*)" in the nested div$/ do |value|
|
109
|
+
@div.text.should == value
|
110
|
+
end
|
111
|
+
|
112
|
+
When /^I search for a span located in a div$/ do
|
113
|
+
@span = @page.nested_span_element
|
114
|
+
end
|
115
|
+
|
116
|
+
Then /^I should see the text "([^\"]*)" in the nested span$/ do |value|
|
117
|
+
@span.text.should == value
|
118
|
+
end
|
119
|
+
|
120
|
+
When /^I search for a table located in a div$/ do
|
121
|
+
@table = @page.nested_table_element
|
122
|
+
end
|
123
|
+
|
124
|
+
Then /^the data for row "([^\"]*)" of the nested table should be "([^\"]*)" and "([^\"]*)"$/ do |row, col1, col2|
|
125
|
+
table_row = @table[row.to_i - 1]
|
126
|
+
table_row[0].text.should == col1
|
127
|
+
table_row[1].text.should == col2
|
128
|
+
end
|
129
|
+
|
130
|
+
When /^I search the second table cell located in a table in a div$/ do
|
131
|
+
@cell = @page.nested_cell_element
|
132
|
+
end
|
133
|
+
|
134
|
+
Then /^the nested table cell should contain "([^\"]*)"$/ do |value|
|
135
|
+
@cell.text.should == value
|
136
|
+
end
|
137
|
+
|
138
|
+
When /^I search for an image located in a div$/ do
|
139
|
+
@image = @page.nested_image_element
|
140
|
+
end
|
141
|
+
|
142
|
+
Then /^the nested image should be "([^\"]*)" pixels wide$/ do |width|
|
143
|
+
@image.width.should == width.to_i
|
144
|
+
end
|
145
|
+
|
146
|
+
Then /^the nested image should be "([^\"]*)" pixels tall$/ do |height|
|
147
|
+
@image.height.should == height.to_i
|
148
|
+
end
|
149
|
+
|
150
|
+
When /^I search for a form located in a div$/ do
|
151
|
+
@form = @page.nested_form_element
|
152
|
+
end
|
153
|
+
|
154
|
+
Then /^I should be able to submit the nested form$/ do
|
155
|
+
@form.submit
|
156
|
+
end
|
157
|
+
|
158
|
+
When /^I search for an ordered list located in a div$/ do
|
159
|
+
@list = @page.nested_ordered_list_element
|
160
|
+
end
|
161
|
+
|
162
|
+
Then /^the first nested list items text should be "([^\"]*)"$/ do |value|
|
163
|
+
@list[0].text.should == value
|
164
|
+
end
|
165
|
+
|
166
|
+
When /^I search for an unordered list located in a div$/ do
|
167
|
+
@list = @page.nested_unordered_list_element
|
168
|
+
end
|
169
|
+
|
170
|
+
When /^I search for a list item nested in an ordered list in a div$/ do
|
171
|
+
@li = @page.nested_list_item_element
|
172
|
+
end
|
173
|
+
|
174
|
+
Then /^I should see the nested list items text should be "([^\"]*)"$/ do |value|
|
175
|
+
@li.text.should == value
|
176
|
+
end
|
177
|
+
|
178
|
+
When /^I search for a h(\d+) located in a div$/ do |num|
|
179
|
+
@header = @page.send "nested_h#{num}_element"
|
180
|
+
end
|
181
|
+
|
182
|
+
Then /^I should see the nested h(\d+)s text should be "([^\"]*)"$/ do |num, value|
|
183
|
+
@header.text.should == value
|
184
|
+
end
|
185
|
+
|
186
|
+
When /^I search for a paragraph located in a div$/ do
|
187
|
+
@para = @page.nested_paragraph_element
|
188
|
+
end
|
189
|
+
|
190
|
+
Then /^I should see the nested paragraphs text should be "([^\"]*)"$/ do |value|
|
191
|
+
@para.text.should == value
|
192
|
+
end
|
193
|
+
|
194
|
+
When /^I search for a file field located in a div$/ do
|
195
|
+
@ff = @page.nested_file_field_element
|
196
|
+
end
|
197
|
+
|
198
|
+
Then /^I should be able to set the nested file field$/ do
|
199
|
+
@ff.value = __FILE__
|
200
|
+
end
|
201
|
+
|
202
|
+
When /^I get the outter unordered list$/ do
|
203
|
+
@list = @page.outer_list_element
|
204
|
+
end
|
205
|
+
|
206
|
+
When /^I get the outter ordered list$/ do
|
207
|
+
@list = @page.ordered_outer_element
|
208
|
+
end
|
209
|
+
|
210
|
+
Then /^I should see "([^\"]*)" for list item (\d+)$/ do |text, item_number|
|
211
|
+
@list[item_number.to_i - 1].text.should == text
|
212
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
When /^I get the first item from the ordered list$/ do
|
2
|
+
@element = @page.ol_id_element[0]
|
3
|
+
end
|
4
|
+
|
5
|
+
When /^I search for the ordered list by "([^\"]*)"$/ do |how|
|
6
|
+
@list = @page.send "ol_#{how}_element"
|
7
|
+
end
|
8
|
+
|
9
|
+
When /^I search for the ordered list by "([^"]*)" and "([^"]*)"$/ do |param1, param2|
|
10
|
+
@list = @page.send "ol_#{param1}_#{param2}_element"
|
11
|
+
end
|
12
|
+
|
13
|
+
When /^I search for the ordered list while the script is executing$/ do
|
14
|
+
@list = @page.ordered_list_element(:id => 'ol_id')
|
15
|
+
end
|
16
|
+
|
17
|
+
Then /^I should see that the ordered list exists$/ do
|
18
|
+
@page.ol_id?.should == true
|
19
|
+
end
|
20
|
+
|
21
|
+
Then /^the text for the ordered list should contain "(.*)"$/ do |text|
|
22
|
+
@page.send("ol_id").should include text
|
23
|
+
end
|
@@ -0,0 +1,135 @@
|
|
1
|
+
Then /^the page should contain the text "([^\"]*)"$/ do |text|
|
2
|
+
@page.text.should include text
|
3
|
+
end
|
4
|
+
|
5
|
+
Then /^the page should contain the html "([^\"]*)"$/ do |html|
|
6
|
+
@page.html.should include html
|
7
|
+
end
|
8
|
+
|
9
|
+
Then /^the page should have the title "([^\"]*)"$/ do |title|
|
10
|
+
@page.title.should include title
|
11
|
+
end
|
12
|
+
|
13
|
+
Then /^I should be able to wait for a block to return true$/ do
|
14
|
+
@page.google_search_id
|
15
|
+
@page.wait_until(10, "too long to display page") do
|
16
|
+
@page.text.include? 'Success'
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
When /^I handle the alert$/ do
|
21
|
+
@msg = @page.alert do
|
22
|
+
@page.alert_button
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
When /^I handle the possible alert$/ do
|
27
|
+
@msg = @page.alert do
|
28
|
+
@page.alert_button_element.focus
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
When /^I handle the alert that reloads the page$/ do
|
33
|
+
@msg = @page.alert do
|
34
|
+
@page.alert_button_that_reloads
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
Then /^I should be able to get the alert\'s message$/ do
|
39
|
+
@msg.should == "I am an alert"
|
40
|
+
end
|
41
|
+
|
42
|
+
Then /^I should be able to verify the popup didn\'t have a message$/ do
|
43
|
+
@msg.should be_nil
|
44
|
+
end
|
45
|
+
|
46
|
+
When /^I handle the confirm$/ do
|
47
|
+
@msg = @page.confirm(true) do
|
48
|
+
@page.confirm_button
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
When /^I handle the possible confirm$/ do
|
53
|
+
@msg = @page.confirm(true) do
|
54
|
+
@page.confirm_button_element.focus
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
When /^I handle the confirm that reloads the page$/ do
|
59
|
+
@msg = @page.confirm(true) do
|
60
|
+
@page.confirm_button_that_reloads
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
Then /^I should be able to get the confirm message$/ do
|
65
|
+
@msg.should == 'set the value'
|
66
|
+
end
|
67
|
+
|
68
|
+
When /^I handle the prompt$/ do
|
69
|
+
@msg = @page.prompt("Cheezy") do
|
70
|
+
@page.prompt_button
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
When /^I handle the possible prompt$/ do
|
75
|
+
@msg = @page.prompt("Cheezy") do
|
76
|
+
@page.prompt_button_element.focus
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
Then /^I should be able to get the message and default value$/ do
|
81
|
+
@msg[:message].should == "enter your name"
|
82
|
+
@msg[:default_value].should == 'John Doe'
|
83
|
+
end
|
84
|
+
|
85
|
+
When /^I open a second window$/ do
|
86
|
+
@page.open_window
|
87
|
+
end
|
88
|
+
|
89
|
+
When /^I open a third window$/ do
|
90
|
+
@page.open_another_window
|
91
|
+
end
|
92
|
+
|
93
|
+
class SecondPage
|
94
|
+
include PageObject
|
95
|
+
end
|
96
|
+
|
97
|
+
Then /^I should be able to attach to a page object using title$/ do
|
98
|
+
@second_page = SecondPage.new(@browser)
|
99
|
+
@second_page.attach_to_window(:title => "Success")
|
100
|
+
@second_page.title.should == "Success"
|
101
|
+
end
|
102
|
+
|
103
|
+
Then /^I should be able to attach to a page object using url$/ do
|
104
|
+
@second_page = SecondPage.new(@browser)
|
105
|
+
@second_page.attach_to_window(:url => "success.html")
|
106
|
+
@second_page.current_url.should include 'success.html'
|
107
|
+
end
|
108
|
+
|
109
|
+
Then /^I should be able to refresh the page$/ do
|
110
|
+
@page.refresh
|
111
|
+
end
|
112
|
+
|
113
|
+
When /^I press the back button$/ do
|
114
|
+
@page.back
|
115
|
+
end
|
116
|
+
|
117
|
+
When /^I press the forward button$/ do
|
118
|
+
@page.forward
|
119
|
+
end
|
120
|
+
|
121
|
+
Then /^the page should have the expected title$/ do
|
122
|
+
@page.should have_expected_title
|
123
|
+
end
|
124
|
+
|
125
|
+
Then /^the page should have the expected element$/ do
|
126
|
+
@page.should have_expected_element
|
127
|
+
end
|
128
|
+
|
129
|
+
Then /^the page should not have the expected element$/ do
|
130
|
+
class FakePage
|
131
|
+
include PageObject
|
132
|
+
expected_element :blah
|
133
|
+
end
|
134
|
+
FakePage.new(@browser).should_not have_expected_element
|
135
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
|
2
|
+
When /^I get the text from the paragraph$/ do
|
3
|
+
@text = @page.p_id
|
4
|
+
end
|
5
|
+
|
6
|
+
When /^I search for the paragraph by "([^"]*)"$/ do |how|
|
7
|
+
@text = @page.send "p_#{how}".to_sym
|
8
|
+
end
|
9
|
+
|
10
|
+
When /^I search for the paragraph by "([^"]*)" and "([^"]*)"$/ do |param1, param2|
|
11
|
+
@text = @page.send "p_#{param1}_#{param2}"
|
12
|
+
end
|
13
|
+
|
14
|
+
When /^I get the text from a paragraph while the script is executing$/ do
|
15
|
+
@text = @page.paragraph_element(:id => 'p_id').text
|
16
|
+
end
|
17
|
+
|
18
|
+
Then /^I should see that the paragraph exists$/ do
|
19
|
+
@page.p_id?.should == true
|
20
|
+
end
|
21
|
+
|
22
|
+
Then(/^I should know the paragraph class is "(.*?)"$/) do |class_name|
|
23
|
+
@page.p_id_element.class_name.should == class_name
|
24
|
+
end
|
25
|
+
|
26
|
+
Then(/^I should be able to select "(.*?)" from the paragraph$/) do |text|
|
27
|
+
@page.p_id_element.select_text text
|
28
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
When /^no radio buttons have been selected$/ do
|
2
|
+
# nothing to do here
|
3
|
+
end
|
4
|
+
|
5
|
+
Then /^no radio buttons should be selected in the group$/ do
|
6
|
+
@page.favorite_cheese_selected?.should == false
|
7
|
+
end
|
8
|
+
|
9
|
+
When /^I select the "([^\"]*)" radio button in the group$/ do |how|
|
10
|
+
@page.select_favorite_cheese("#{how}")
|
11
|
+
end
|
12
|
+
|
13
|
+
Then /^the "([^\"]*)" radio button should be selected in the group$/ do |how|
|
14
|
+
@page.favorite_cheese_selected?.should == "#{how}"
|
15
|
+
end
|
16
|
+
|
17
|
+
Then /^the "([^\"]*)" radio button should not be selected$/ do |how|
|
18
|
+
@page.favorite_cheese_selected?.should_not == "#{how}"
|
19
|
+
end
|
20
|
+
|
21
|
+
Then /^I should see that the radio button group exists$/ do
|
22
|
+
@page.favorite_cheese?.should == true
|
23
|
+
end
|
24
|
+
|
25
|
+
When /^I ask for the elements of a radio button group$/ do
|
26
|
+
@elems = @page.favorite_cheese_elements
|
27
|
+
end
|
28
|
+
|
29
|
+
Then /^I should have an array with elements for each radio button$/ do
|
30
|
+
@elems.length.should == 3
|
31
|
+
end
|
32
|
+
|
33
|
+
And /^the radio button element values should be "([^\"]*)", "([^\"]*)", "([^\"]*)"$/ do |val1, val2, val3|
|
34
|
+
elem_arr = @elems.collect { |elem| elem.value }
|
35
|
+
elem_arr.should == [val1, val2, val3]
|
36
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
When /^I select the "([^\"]*)" radio button$/ do |how|
|
2
|
+
@page.send "select_#{how.downcase}_id".to_sym
|
3
|
+
end
|
4
|
+
|
5
|
+
Then /^the "([^\"]*)" radio button should be selected$/ do |how|
|
6
|
+
@page.send "#{how.downcase}_id_selected?".to_sym
|
7
|
+
end
|
8
|
+
|
9
|
+
When /^I search for the radio button by "([^\"]*)"$/ do |how|
|
10
|
+
@how = how
|
11
|
+
end
|
12
|
+
|
13
|
+
When /^I search for the radio button by "([^"]*)" and "([^"]*)"$/ do |param1, param2|
|
14
|
+
@how = "#{param1}_#{param2}"
|
15
|
+
end
|
16
|
+
|
17
|
+
When /^I select the radio button$/ do
|
18
|
+
@page.send "select_milk_#{@how}".to_sym
|
19
|
+
end
|
20
|
+
|
21
|
+
When /^I select the radio button while the script is executing$/ do
|
22
|
+
@page.radio_button_element(:id => 'milk_id').select
|
23
|
+
end
|
24
|
+
|
25
|
+
Then /^I should see that the radio button exists$/ do
|
26
|
+
@page.milk_id?.should == true
|
27
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
When /^I select "([^\"]*)" from the select list$/ do |text|
|
2
|
+
@page.sel_list_id = text
|
3
|
+
end
|
4
|
+
|
5
|
+
When /^I search for the select list by "([^\"]*)"$/ do |how|
|
6
|
+
@how = how
|
7
|
+
end
|
8
|
+
|
9
|
+
When /^I search for the select list by "([^"]*)" and "([^"]*)"$/ do |param1, param2|
|
10
|
+
@how = "#{param1}_#{param2}"
|
11
|
+
end
|
12
|
+
|
13
|
+
Then /^I should be able to select "([^\"]*)"$/ do |value|
|
14
|
+
@page.send "sel_list_#{@how}=".to_sym, value
|
15
|
+
end
|
16
|
+
|
17
|
+
Then /^the value for the selected item should be "([^\"]*)"$/ do |value|
|
18
|
+
result = @page.send "sel_list_#{@how}".to_sym
|
19
|
+
result.should == value
|
20
|
+
end
|
21
|
+
|
22
|
+
When /^I find a select list while the script is executing$/ do
|
23
|
+
@select_list = @page.select_list_element(:id => 'sel_list_id')
|
24
|
+
end
|
25
|
+
|
26
|
+
Then /^I should be able to select "([^\"]*)" from the list$/ do |value|
|
27
|
+
@select_list.select(value)
|
28
|
+
end
|
29
|
+
|
30
|
+
Then /^I should see that the select list exists$/ do
|
31
|
+
@page.sel_list_id?.should == true
|
32
|
+
end
|
33
|
+
|
34
|
+
Then /^the selected option should be "([^\"]*)"$/ do |text|
|
35
|
+
@page.select_list_element(:id => 'sel_list_id').selected_options[0].should == text
|
36
|
+
end
|
37
|
+
|
38
|
+
Then /^the select list should include "([^\"]*)"$/ do |text|
|
39
|
+
@page.sel_list_id_element.should include text
|
40
|
+
end
|
41
|
+
|
42
|
+
Then /^the select list should know that "([^\"]*)" is selected$/ do |text|
|
43
|
+
@page.sel_list_id_element.selected?(text).should be_true
|
44
|
+
end
|
45
|
+
|
46
|
+
Then /^the value for the option should be "([^\"]*)"$/ do |value|
|
47
|
+
element = @page.send "sel_list_#{@how}_element".to_sym
|
48
|
+
element.value.should == value
|
49
|
+
end
|
50
|
+
|
51
|
+
When /^I clear multiple select list$/ do
|
52
|
+
@page.sel_list_multiple_element.clear
|
53
|
+
end
|
54
|
+
|
55
|
+
Then /^multiple select list should have no selected options$/ do
|
56
|
+
@page.sel_list_multiple_element.selected_options.should be_empty
|
57
|
+
end
|
58
|
+
|
59
|
+
When /^I select an option using the value "([^\"]*)"$/ do |value|
|
60
|
+
@page.sel_list_id_element.select_value(value)
|
61
|
+
end
|
62
|
+
|
63
|
+
Then /^the selected option should have a value of "([^\"]*)"$/ do |value|
|
64
|
+
@page.sel_list_id_element.selected_values[0].should == value
|
65
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
When /^I get the text from the span$/ do
|
2
|
+
@text = @page.span_id
|
3
|
+
end
|
4
|
+
|
5
|
+
When /^I search for the span by "([^\"]*)"$/ do |how|
|
6
|
+
@text = @page.send "span_#{how}".to_sym
|
7
|
+
end
|
8
|
+
|
9
|
+
When /^I search for the span by "([^"]*)" and "([^"]*)"$/ do |param1, param2|
|
10
|
+
@text = @page.send "span_#{param1}_#{param2}".to_sym
|
11
|
+
end
|
12
|
+
|
13
|
+
When /^I get the text from a span while the script is executing$/ do
|
14
|
+
@text = @page.span_element(:id => 'span_id').text
|
15
|
+
end
|
16
|
+
|
17
|
+
Then /^I should see that the span exists$/ do
|
18
|
+
@page.span_id?.should == true
|
19
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
When /^I search for the table cell by "([^\"]*)"$/ do |how|
|
2
|
+
@cell_data = @page.send "cell_#{how}"
|
3
|
+
end
|
4
|
+
|
5
|
+
When /^I retrieve a table cell element by "([^"]*)" and "([^"]*)"$/ do |param1, param2|
|
6
|
+
@cell_data = @page.send "cell_#{param1}_#{param2}"
|
7
|
+
end
|
8
|
+
|
9
|
+
When /^I retrieve a table cell element while the script is executing$/ do
|
10
|
+
@cell_data = @page.cell_element(:id => 'cell_id').text
|
11
|
+
end
|
12
|
+
|
13
|
+
Then /^I should see that the cell exists$/ do
|
14
|
+
@page.cell_id?.should == true
|
15
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
Then /^the data for row "([^\"]*)" should be "([^\"]*)" and "([^\"]*)"$/ do |row, col1, col2|
|
2
|
+
row = (row.to_i - 1) if row.to_i > 0
|
3
|
+
table_row = @element[row]
|
4
|
+
table_row[0].text.should == col1
|
5
|
+
table_row[1].text.should == col2
|
6
|
+
end
|
7
|
+
|
8
|
+
|
9
|
+
When /^I retrieve the data from the table cell$/ do
|
10
|
+
@cell_data = @page.cell_id
|
11
|
+
end
|
12
|
+
|
13
|
+
Then /^the cell data should be '([^"]*)'$/ do |expected|
|
14
|
+
@cell_data.should == expected
|
15
|
+
end
|
16
|
+
|
17
|
+
When /^I retrieve a table element by "([^\"]*)"$/ do |how|
|
18
|
+
@element = @page.send "table_#{how}_element"
|
19
|
+
end
|
20
|
+
|
21
|
+
When /^I retrieve a table element by "([^\"]*)" and "([^\"]*)"$/ do |param1, param2|
|
22
|
+
@element = @page.send "table_#{param1}_#{param2}_element"
|
23
|
+
end
|
24
|
+
|
25
|
+
When /^I retrieve a table element while the script is executing$/ do
|
26
|
+
@element = @page.table_element(:id => 'table_id')
|
27
|
+
end
|
28
|
+
|
29
|
+
Then /^the data for the first row should be "([^\"]*)" and "([^\"]*)"$/ do |col1, col2|
|
30
|
+
@element.first_row[0].text.should == col1
|
31
|
+
@element.first_row[1].text.should == col2
|
32
|
+
end
|
33
|
+
|
34
|
+
Then /^the data for the second row should be "([^\"]*)" and "([^\"]*)"$/ do |col1, col2|
|
35
|
+
@element[1][0].text.should == col1
|
36
|
+
@element[1][1].text.should == col2
|
37
|
+
end
|
38
|
+
|
39
|
+
Then /^the data for the last row should be "([^\"]*)" and "([^\"]*)"$/ do |col1, col2|
|
40
|
+
@element.last_row[0].text.should == col1
|
41
|
+
@element.last_row[1].text.should == col2
|
42
|
+
end
|
43
|
+
|
44
|
+
Then /^I should see that the table exists$/ do
|
45
|
+
@page.table_id?.should == true
|
46
|
+
end
|
47
|
+
|
48
|
+
Then /^the data for column "([^\"]*)" and row "([^\"]*)" should be "([^\"]*)"$/ do |column, row, value|
|
49
|
+
@element[row.to_i - 1][column].text.should == value
|
50
|
+
end
|
51
|
+
|
52
|
+
Then /^the data for row "([^\"]*)" and column "([^\"]*)" should be "([^\"]*)"$/ do |row, column, value|
|
53
|
+
@element[row][column].text.should == value
|
54
|
+
end
|
55
|
+
|
56
|
+
Then /^the data for row "([^\"]*)" should be nil$/ do |row|
|
57
|
+
@element[row].should be_nil
|
58
|
+
end
|
59
|
+
|
60
|
+
Then /^the data for row "([^\"]*)" and column "([^\"]*)" should be nil$/ do |row, column|
|
61
|
+
@element[row][column].should be_nil
|
62
|
+
end
|
63
|
+
|
64
|
+
Then /^I should see the text includes "([^"]*)" when I retrieve it by "([^"]*)"$/ do |text, how|
|
65
|
+
@page.send("table_#{how}").should include text
|
66
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
When /^I type "([^\"]*)" into the text area$/ do |text|
|
2
|
+
@page.text_area_id = text
|
3
|
+
end
|
4
|
+
|
5
|
+
Then /^the text area should contain "([^\"]*)"$/ do |expected_text|
|
6
|
+
@page.text_area_id.should == expected_text
|
7
|
+
end
|
8
|
+
|
9
|
+
When /^I search for the text area by "([^\"]*)"$/ do |how|
|
10
|
+
@how = how
|
11
|
+
end
|
12
|
+
|
13
|
+
When /^I search for the text area by "([^"]*)" and "([^"]*)"$/ do |param1, param2|
|
14
|
+
@how = "#{param1}_#{param2}"
|
15
|
+
end
|
16
|
+
|
17
|
+
Then /^I should be able to type "([^\"]*)" into the area$/ do |value|
|
18
|
+
@page.send "text_area_#{@how}=".to_sym, value
|
19
|
+
end
|
20
|
+
|
21
|
+
When /^I find a text area while the script is executing$/ do
|
22
|
+
@text_area = @page.text_area_element(:id => 'text_area_id')
|
23
|
+
end
|
24
|
+
|
25
|
+
Then /^I should be able to type "([^"]*)" into the area element$/ do |value|
|
26
|
+
@text_area.value = value
|
27
|
+
end
|
28
|
+
|
29
|
+
When /^I clear the text area$/ do
|
30
|
+
@page.text_area_id_element.clear
|
31
|
+
end
|
32
|
+
|
33
|
+
Then /^I should see that the text area exists$/ do
|
34
|
+
@page.text_area_id?.should == true
|
35
|
+
end
|