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,589 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
class SeleniumAccessorsTestPageObject
|
4
|
+
include PageObject
|
5
|
+
|
6
|
+
page_url "http://apple.com"
|
7
|
+
expected_title "Expected Title"
|
8
|
+
expected_element :google_search
|
9
|
+
link(:google_search, :link => 'Google Search')
|
10
|
+
text_field(:first_name, :id => 'first_name')
|
11
|
+
hidden_field(:social_security_number, :id => 'ssn')
|
12
|
+
text_area(:address, :id => 'address')
|
13
|
+
select_list(:state, :id => 'state')
|
14
|
+
checkbox(:active, :id => 'is_active_id')
|
15
|
+
radio_button(:first, :id => 'first_choice')
|
16
|
+
button(:click_me, :id => 'button_submit')
|
17
|
+
div(:message, :id => 'message_id')
|
18
|
+
table(:cart, :id => 'cart_id')
|
19
|
+
cell(:total, :id => 'total')
|
20
|
+
span(:alert_span, :id => 'alert_id')
|
21
|
+
image(:logo, :id => 'logo')
|
22
|
+
form(:login, :id => 'login')
|
23
|
+
list_item(:item_one, :id => 'one')
|
24
|
+
unordered_list(:menu, :id => 'main_menu')
|
25
|
+
ordered_list(:top_five, :id => 'top')
|
26
|
+
h1(:heading1, :id => 'main_heading')
|
27
|
+
h2(:heading2, :id => 'main_heading')
|
28
|
+
h3(:heading3, :id => 'main_heading')
|
29
|
+
h4(:heading4, :id => 'main_heading')
|
30
|
+
h5(:heading5, :id => 'main_heading')
|
31
|
+
h6(:heading6, :id => 'main_heading')
|
32
|
+
paragraph(:first_para, :id => 'first')
|
33
|
+
file_field(:upload_me, :id => 'the_file')
|
34
|
+
area(:img_area, :id => 'area')
|
35
|
+
canvas(:my_canvas, :id => 'canvas')
|
36
|
+
audio(:acdc, :id => 'audio_id')
|
37
|
+
video(:movie, :id => 'movie_id')
|
38
|
+
end
|
39
|
+
|
40
|
+
class SeleniumBlockPageObject
|
41
|
+
include PageObject
|
42
|
+
|
43
|
+
attr_reader :value
|
44
|
+
|
45
|
+
text_field :first_name do |element|
|
46
|
+
"text_field"
|
47
|
+
end
|
48
|
+
hidden_field :secret do |element|
|
49
|
+
"hidden_field"
|
50
|
+
end
|
51
|
+
text_area :address do |element|
|
52
|
+
"text_area"
|
53
|
+
end
|
54
|
+
select_list :state do |element|
|
55
|
+
"select_list"
|
56
|
+
end
|
57
|
+
link :continue do |element|
|
58
|
+
"link"
|
59
|
+
end
|
60
|
+
checkbox :active do |element|
|
61
|
+
"checkbox"
|
62
|
+
end
|
63
|
+
radio_button :first do |element|
|
64
|
+
"radio_button"
|
65
|
+
end
|
66
|
+
button :click_me do |element|
|
67
|
+
"button"
|
68
|
+
end
|
69
|
+
div :footer do |element|
|
70
|
+
"div"
|
71
|
+
end
|
72
|
+
span :alert_span do |element|
|
73
|
+
"span"
|
74
|
+
end
|
75
|
+
table :cart do |element|
|
76
|
+
"table"
|
77
|
+
end
|
78
|
+
cell :total do |element|
|
79
|
+
"cell"
|
80
|
+
end
|
81
|
+
image :logo do |element|
|
82
|
+
"image"
|
83
|
+
end
|
84
|
+
form :login do |element|
|
85
|
+
"form"
|
86
|
+
end
|
87
|
+
list_item :item_one do |element|
|
88
|
+
"list_item"
|
89
|
+
end
|
90
|
+
unordered_list :menu do |element|
|
91
|
+
"unordered_list"
|
92
|
+
end
|
93
|
+
ordered_list :top_five do |element|
|
94
|
+
"ordered_list"
|
95
|
+
end
|
96
|
+
h1 :heading1 do |element|
|
97
|
+
"h1"
|
98
|
+
end
|
99
|
+
h2 :heading2 do |element|
|
100
|
+
"h2"
|
101
|
+
end
|
102
|
+
h3 :heading3 do |element|
|
103
|
+
"h3"
|
104
|
+
end
|
105
|
+
h4 :heading4 do |element|
|
106
|
+
"h4"
|
107
|
+
end
|
108
|
+
h5 :heading5 do |element|
|
109
|
+
"h5"
|
110
|
+
end
|
111
|
+
h6 :heading6 do |element|
|
112
|
+
"h6"
|
113
|
+
end
|
114
|
+
paragraph :first_para do |element|
|
115
|
+
"p"
|
116
|
+
end
|
117
|
+
file_field :a_file do |element|
|
118
|
+
"file_field"
|
119
|
+
end
|
120
|
+
area :img_area do |element|
|
121
|
+
"area"
|
122
|
+
end
|
123
|
+
canvas :my_canvas do |element|
|
124
|
+
"canvas"
|
125
|
+
end
|
126
|
+
audio :acdc do |element|
|
127
|
+
'audio'
|
128
|
+
end
|
129
|
+
video :movie do |element|
|
130
|
+
'video'
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
describe PageObject::Accessors do
|
135
|
+
let(:selenium_browser) { mock_selenium_browser }
|
136
|
+
let(:selenium_page_object) { SeleniumAccessorsTestPageObject.new(selenium_browser) }
|
137
|
+
let(:block_page_object) { SeleniumBlockPageObject.new(selenium_browser) }
|
138
|
+
|
139
|
+
before(:each) do
|
140
|
+
selenium_browser.stub(:switch_to).and_return(selenium_browser)
|
141
|
+
selenium_browser.stub(:default_content)
|
142
|
+
end
|
143
|
+
|
144
|
+
describe "link accessors" do
|
145
|
+
it "should select a link" do
|
146
|
+
selenium_browser.stub_chain(:find_element, :click)
|
147
|
+
selenium_page_object.google_search
|
148
|
+
end
|
149
|
+
|
150
|
+
it "should return a link element" do
|
151
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
152
|
+
element = selenium_page_object.google_search_element
|
153
|
+
element.should be_instance_of PageObject::Elements::Link
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
157
|
+
|
158
|
+
describe "text_field accessors" do
|
159
|
+
it "should get the text from the text field element" do
|
160
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
161
|
+
selenium_browser.should_receive(:attribute).with('value').and_return('Katie')
|
162
|
+
selenium_page_object.first_name.should == 'Katie'
|
163
|
+
end
|
164
|
+
|
165
|
+
it "should set some text on a text field element" do
|
166
|
+
selenium_browser.should_receive(:find_element).twice.and_return(selenium_browser)
|
167
|
+
selenium_browser.should_receive(:clear)
|
168
|
+
selenium_browser.should_receive(:send_keys).with('Katie')
|
169
|
+
selenium_page_object.first_name = 'Katie'
|
170
|
+
end
|
171
|
+
|
172
|
+
it "should retrieve a text field element" do
|
173
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
174
|
+
element = selenium_page_object.first_name_element
|
175
|
+
element.should be_instance_of PageObject::Elements::TextField
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
179
|
+
|
180
|
+
describe "hidden field accessors" do
|
181
|
+
it "should get the text from a hidden field" do
|
182
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
183
|
+
selenium_browser.should_receive(:attribute).with('value').and_return("12345")
|
184
|
+
selenium_page_object.social_security_number.should == "12345"
|
185
|
+
end
|
186
|
+
|
187
|
+
it "should retrieve a hidden field element" do
|
188
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
189
|
+
element = selenium_page_object.social_security_number_element
|
190
|
+
element.should be_instance_of PageObject::Elements::HiddenField
|
191
|
+
end
|
192
|
+
end
|
193
|
+
|
194
|
+
describe "text area accessors" do
|
195
|
+
it "should set some text on the text area" do
|
196
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
197
|
+
selenium_browser.should_receive(:clear)
|
198
|
+
selenium_browser.should_receive(:send_keys).with("123 main street")
|
199
|
+
selenium_page_object.address = "123 main street"
|
200
|
+
end
|
201
|
+
|
202
|
+
it "should get the text from the text area" do
|
203
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
204
|
+
selenium_browser.should_receive(:attribute).with('value').and_return("123 main street")
|
205
|
+
selenium_page_object.address.should == "123 main street"
|
206
|
+
end
|
207
|
+
|
208
|
+
it "should retrieve a text area element" do
|
209
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
210
|
+
element = selenium_page_object.address_element
|
211
|
+
element.should be_instance_of PageObject::Elements::TextArea
|
212
|
+
end
|
213
|
+
end
|
214
|
+
|
215
|
+
describe "select_list accessors" do
|
216
|
+
it "should should get the current item from a select list" do
|
217
|
+
selected = "OH"
|
218
|
+
selected.should_receive(:selected?).and_return(selected)
|
219
|
+
selected.should_receive(:text).and_return("OH")
|
220
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
221
|
+
selenium_browser.should_receive(:find_elements).and_return([selected])
|
222
|
+
selenium_page_object.state.should == "OH"
|
223
|
+
end
|
224
|
+
|
225
|
+
it "should set the current item of a select list" do
|
226
|
+
option = double('option')
|
227
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
228
|
+
selenium_browser.should_receive(:find_elements).and_return([option])
|
229
|
+
option.should_receive(:text).and_return('OH')
|
230
|
+
option.should_receive(:click)
|
231
|
+
selenium_page_object.state = "OH"
|
232
|
+
end
|
233
|
+
|
234
|
+
it "should retrieve the select list element" do
|
235
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
236
|
+
element = selenium_page_object.state_element
|
237
|
+
element.should be_instance_of PageObject::Elements::SelectList
|
238
|
+
end
|
239
|
+
|
240
|
+
it "should return list of selection options" do
|
241
|
+
option1 = double('option')
|
242
|
+
option2 = double('option')
|
243
|
+
option1.should_receive(:text).and_return("CA")
|
244
|
+
option2.should_receive(:text).and_return("OH")
|
245
|
+
|
246
|
+
select_element = double("select")
|
247
|
+
select_element.should_receive(:options).twice.and_return([option1, option2])
|
248
|
+
selenium_page_object.should_receive(:state_element).and_return(select_element)
|
249
|
+
|
250
|
+
selenium_page_object.state_options.should == ["CA","OH"]
|
251
|
+
end
|
252
|
+
|
253
|
+
end
|
254
|
+
|
255
|
+
|
256
|
+
describe "check_box accessors" do
|
257
|
+
it "should check a check box element" do
|
258
|
+
selenium_browser.should_receive(:find_element).twice.and_return(selenium_browser)
|
259
|
+
selenium_browser.should_receive(:selected?).and_return(false)
|
260
|
+
selenium_browser.should_receive(:click)
|
261
|
+
selenium_page_object.check_active
|
262
|
+
end
|
263
|
+
|
264
|
+
it "should clear a check box element" do
|
265
|
+
selenium_browser.should_receive(:find_element).twice.and_return(selenium_browser)
|
266
|
+
selenium_browser.should_receive(:selected?).and_return(true)
|
267
|
+
selenium_browser.should_receive(:click)
|
268
|
+
selenium_page_object.uncheck_active
|
269
|
+
end
|
270
|
+
|
271
|
+
it "should know if a check box element is selected" do
|
272
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
273
|
+
selenium_browser.should_receive(:selected?).and_return(true)
|
274
|
+
selenium_page_object.active_checked?.should be true
|
275
|
+
end
|
276
|
+
|
277
|
+
it "should retrieve a checkbox element" do
|
278
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
279
|
+
element = selenium_page_object.active_element
|
280
|
+
element.should be_instance_of PageObject::Elements::CheckBox
|
281
|
+
end
|
282
|
+
end
|
283
|
+
|
284
|
+
|
285
|
+
describe "radio accessors" do
|
286
|
+
it "should select a radio button" do
|
287
|
+
selenium_browser.should_receive(:find_element).twice.and_return(selenium_browser)
|
288
|
+
selenium_browser.should_receive(:selected?).and_return(false)
|
289
|
+
selenium_browser.should_receive(:click)
|
290
|
+
selenium_page_object.select_first
|
291
|
+
end
|
292
|
+
|
293
|
+
it "should determine if a radio is selected" do
|
294
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
295
|
+
selenium_browser.should_receive(:selected?).and_return(true)
|
296
|
+
selenium_page_object.first_selected?
|
297
|
+
end
|
298
|
+
|
299
|
+
it "should retrieve a radio button element" do
|
300
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
301
|
+
element = selenium_page_object.first_element
|
302
|
+
element.should be_instance_of PageObject::Elements::RadioButton
|
303
|
+
end
|
304
|
+
end
|
305
|
+
|
306
|
+
describe "button accessors" do
|
307
|
+
it "should be able to click a button" do
|
308
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
309
|
+
selenium_browser.should_receive(:click)
|
310
|
+
selenium_page_object.click_me
|
311
|
+
end
|
312
|
+
|
313
|
+
it "should retrieve a button element" do
|
314
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
315
|
+
element = selenium_page_object.click_me_element
|
316
|
+
element.should be_instance_of PageObject::Elements::Button
|
317
|
+
end
|
318
|
+
end
|
319
|
+
|
320
|
+
describe "div accessors" do
|
321
|
+
it "should retrieve the text from a div" do
|
322
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
323
|
+
selenium_browser.should_receive(:text).and_return("Message from div")
|
324
|
+
selenium_page_object.message.should == "Message from div"
|
325
|
+
end
|
326
|
+
|
327
|
+
it "should retrieve the div element from the page" do
|
328
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
329
|
+
element = selenium_page_object.message_element
|
330
|
+
element.should be_instance_of PageObject::Elements::Div
|
331
|
+
end
|
332
|
+
end
|
333
|
+
|
334
|
+
describe "span accessors" do
|
335
|
+
it "should retrieve the text from a span" do
|
336
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
337
|
+
selenium_browser.should_receive(:text).and_return("Alert")
|
338
|
+
selenium_page_object.alert_span.should == "Alert"
|
339
|
+
end
|
340
|
+
|
341
|
+
it "should retrieve the span element from the page" do
|
342
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
343
|
+
element = selenium_page_object.alert_span_element
|
344
|
+
element.should be_instance_of PageObject::Elements::Span
|
345
|
+
end
|
346
|
+
end
|
347
|
+
|
348
|
+
describe "table accessors" do
|
349
|
+
it "should retrieve the table element from the page" do
|
350
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
351
|
+
element = selenium_page_object.cart_element
|
352
|
+
element.should be_instance_of(PageObject::Elements::Table)
|
353
|
+
end
|
354
|
+
end
|
355
|
+
|
356
|
+
describe "table cell accessors" do
|
357
|
+
it "should retrieve the text from the cell" do
|
358
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
359
|
+
selenium_browser.should_receive(:text).and_return('celldata')
|
360
|
+
selenium_page_object.total.should == 'celldata'
|
361
|
+
end
|
362
|
+
|
363
|
+
it "should retrieve the cell element from the page" do
|
364
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
365
|
+
element = selenium_page_object.total_element
|
366
|
+
element.should be_instance_of PageObject::Elements::TableCell
|
367
|
+
end
|
368
|
+
end
|
369
|
+
|
370
|
+
describe "image accessors" do
|
371
|
+
it "should retrieve the image element from the page" do
|
372
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
373
|
+
element = selenium_page_object.logo_element
|
374
|
+
element.should be_instance_of PageObject::Elements::Image
|
375
|
+
end
|
376
|
+
end
|
377
|
+
|
378
|
+
describe "form accessors" do
|
379
|
+
it "should retrieve the form element from the page" do
|
380
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
381
|
+
element = selenium_page_object.login_element
|
382
|
+
element.should be_instance_of PageObject::Elements::Form
|
383
|
+
end
|
384
|
+
end
|
385
|
+
|
386
|
+
describe "list item accessors" do
|
387
|
+
it "should retrieve the text from the list item" do
|
388
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
389
|
+
selenium_browser.should_receive(:text).and_return("value")
|
390
|
+
selenium_page_object.item_one.should == "value"
|
391
|
+
end
|
392
|
+
|
393
|
+
it "should retrieve the list item from the page" do
|
394
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
395
|
+
element = selenium_page_object.item_one_element
|
396
|
+
element.should be_instance_of PageObject::Elements::ListItem
|
397
|
+
end
|
398
|
+
end
|
399
|
+
|
400
|
+
describe "unordered list accessors" do
|
401
|
+
it "should retrieve the element from the page" do
|
402
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
403
|
+
element = selenium_page_object.menu_element
|
404
|
+
element.should be_instance_of PageObject::Elements::UnorderedList
|
405
|
+
end
|
406
|
+
end
|
407
|
+
|
408
|
+
describe "ordered list accessors" do
|
409
|
+
it "should retrieve the element from the page" do
|
410
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
411
|
+
element = selenium_page_object.top_five_element
|
412
|
+
element.should be_instance_of PageObject::Elements::OrderedList
|
413
|
+
end
|
414
|
+
end
|
415
|
+
|
416
|
+
describe "h1 accessors" do
|
417
|
+
it "should retrieve the text from the h1" do
|
418
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
419
|
+
selenium_browser.should_receive(:text).and_return("value")
|
420
|
+
selenium_page_object.heading1.should == "value"
|
421
|
+
end
|
422
|
+
|
423
|
+
it "should retrieve the element from the page" do
|
424
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
425
|
+
element = selenium_page_object.heading1_element
|
426
|
+
element.should be_instance_of PageObject::Elements::Heading
|
427
|
+
end
|
428
|
+
end
|
429
|
+
|
430
|
+
describe "h2 accessors" do
|
431
|
+
it "should retrieve the text from the h2" do
|
432
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
433
|
+
selenium_browser.should_receive(:text).and_return("value")
|
434
|
+
selenium_page_object.heading2.should == "value"
|
435
|
+
end
|
436
|
+
|
437
|
+
it "should retrieve the element from the page" do
|
438
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
439
|
+
element = selenium_page_object.heading2_element
|
440
|
+
element.should be_instance_of PageObject::Elements::Heading
|
441
|
+
end
|
442
|
+
end
|
443
|
+
|
444
|
+
describe "h3 accessors" do
|
445
|
+
it "should retrieve the text from the h3" do
|
446
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
447
|
+
selenium_browser.should_receive(:text).and_return("value")
|
448
|
+
selenium_page_object.heading3.should == "value"
|
449
|
+
end
|
450
|
+
|
451
|
+
it "should retrieve the element from the page" do
|
452
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
453
|
+
element = selenium_page_object.heading3_element
|
454
|
+
element.should be_instance_of PageObject::Elements::Heading
|
455
|
+
end
|
456
|
+
end
|
457
|
+
|
458
|
+
describe "h4 accessors" do
|
459
|
+
it "should retrieve the text from the h4" do
|
460
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
461
|
+
selenium_browser.should_receive(:text).and_return("value")
|
462
|
+
selenium_page_object.heading4.should == "value"
|
463
|
+
end
|
464
|
+
|
465
|
+
it "should retrieve the element from the page" do
|
466
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
467
|
+
element = selenium_page_object.heading4_element
|
468
|
+
element.should be_instance_of PageObject::Elements::Heading
|
469
|
+
end
|
470
|
+
end
|
471
|
+
|
472
|
+
describe "h5 accessors" do
|
473
|
+
it "should retrieve the text from the h5" do
|
474
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
475
|
+
selenium_browser.should_receive(:text).and_return("value")
|
476
|
+
selenium_page_object.heading5.should == "value"
|
477
|
+
end
|
478
|
+
|
479
|
+
it "should retrieve the element from the page" do
|
480
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
481
|
+
element = selenium_page_object.heading5_element
|
482
|
+
element.should be_instance_of PageObject::Elements::Heading
|
483
|
+
end
|
484
|
+
end
|
485
|
+
|
486
|
+
describe "h6 accessors" do
|
487
|
+
it "should retrieve the text from the h6" do
|
488
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
489
|
+
selenium_browser.should_receive(:text).and_return("value")
|
490
|
+
selenium_page_object.heading6.should == "value"
|
491
|
+
end
|
492
|
+
|
493
|
+
it "should retrieve the element from the page" do
|
494
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
495
|
+
element = selenium_page_object.heading6_element
|
496
|
+
element.should be_instance_of PageObject::Elements::Heading
|
497
|
+
end
|
498
|
+
end
|
499
|
+
|
500
|
+
|
501
|
+
describe "p accessors" do
|
502
|
+
it "should retrieve the text from the p" do
|
503
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
504
|
+
selenium_browser.should_receive(:text).and_return("value")
|
505
|
+
selenium_page_object.first_para.should == "value"
|
506
|
+
end
|
507
|
+
|
508
|
+
it "should retrieve the element from the page" do
|
509
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
510
|
+
element = selenium_page_object.first_para_element
|
511
|
+
element.should be_instance_of PageObject::Elements::Paragraph
|
512
|
+
end
|
513
|
+
end
|
514
|
+
|
515
|
+
describe "file_field accessors" do
|
516
|
+
it "should set the file name" do
|
517
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
518
|
+
selenium_browser.should_receive(:send_keys).with('some_file')
|
519
|
+
selenium_page_object.upload_me = 'some_file'
|
520
|
+
end
|
521
|
+
|
522
|
+
it "should retrieve a file_field element" do
|
523
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
524
|
+
element = selenium_page_object.upload_me_element
|
525
|
+
element.should be_instance_of PageObject::Elements::FileField
|
526
|
+
end
|
527
|
+
end
|
528
|
+
|
529
|
+
describe "area accessors" do
|
530
|
+
context "when called on a page object" do
|
531
|
+
it "should generate accessor methods" do
|
532
|
+
selenium_page_object.should respond_to(:img_area)
|
533
|
+
selenium_page_object.should respond_to(:img_area_element)
|
534
|
+
end
|
535
|
+
|
536
|
+
it "should call a block on the element method when present" do
|
537
|
+
block_page_object.img_area_element.should == "area"
|
538
|
+
end
|
539
|
+
end
|
540
|
+
|
541
|
+
it "should click on the area" do
|
542
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
543
|
+
selenium_browser.should_receive(:click)
|
544
|
+
selenium_page_object.img_area
|
545
|
+
end
|
546
|
+
|
547
|
+
it "should retrieve the element from the page" do
|
548
|
+
selenium_browser.should_receive(:find_element).and_return(selenium_browser)
|
549
|
+
element = selenium_page_object.img_area_element
|
550
|
+
element.should be_instance_of PageObject::Elements::Area
|
551
|
+
end
|
552
|
+
end
|
553
|
+
|
554
|
+
describe "canvas accessors" do
|
555
|
+
context "when called on a page object" do
|
556
|
+
it "should generate accessor methods" do
|
557
|
+
selenium_page_object.should respond_to(:my_canvas_element)
|
558
|
+
end
|
559
|
+
|
560
|
+
it "should call a block on the element method when present" do
|
561
|
+
block_page_object.my_canvas_element.should == "canvas"
|
562
|
+
end
|
563
|
+
end
|
564
|
+
end
|
565
|
+
|
566
|
+
describe "audio accessors" do
|
567
|
+
context "when called on a page object" do
|
568
|
+
it "should generate accessor methods" do
|
569
|
+
selenium_page_object.should respond_to(:acdc_element)
|
570
|
+
end
|
571
|
+
|
572
|
+
it "should call a block on the element method when present" do
|
573
|
+
block_page_object.acdc_element.should == "audio"
|
574
|
+
end
|
575
|
+
end
|
576
|
+
end
|
577
|
+
|
578
|
+
describe "video accessors" do
|
579
|
+
context "when called on a page object" do
|
580
|
+
it "should generate accessor methods" do
|
581
|
+
selenium_page_object.should respond_to(:movie_element)
|
582
|
+
end
|
583
|
+
|
584
|
+
it "should call a block on the elmenet method when present" do
|
585
|
+
block_page_object.movie_element.should == "video"
|
586
|
+
end
|
587
|
+
end
|
588
|
+
end
|
589
|
+
end
|