page-object 0.3.2 → 0.4.0
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.
- data/ChangeLog +16 -0
- data/features/headings.feature +42 -6
- data/features/html/nested_elements.html +11 -5
- data/features/html/static_elements.html +1 -1
- data/features/nested_elements.feature +19 -3
- data/features/paragraph.feature +33 -0
- data/features/step_definitions/nested_elements_steps.rb +12 -16
- data/features/step_definitions/paragraph_steps.rb +16 -0
- data/features/support/page.rb +32 -0
- data/lib/page-object/accessors.rb +116 -0
- data/lib/page-object/element_locators.rb +60 -0
- data/lib/page-object/elements/button.rb +3 -1
- data/lib/page-object/elements/check_box.rb +4 -2
- data/lib/page-object/elements/element.rb +23 -3
- data/lib/page-object/elements/form.rb +4 -2
- data/lib/page-object/elements/image.rb +4 -2
- data/lib/page-object/elements/link.rb +3 -1
- data/lib/page-object/elements/ordered_list.rb +4 -2
- data/lib/page-object/elements/paragraph.rb +7 -0
- data/lib/page-object/elements/radio_button.rb +4 -2
- data/lib/page-object/elements/select_list.rb +4 -2
- data/lib/page-object/elements/table.rb +4 -2
- data/lib/page-object/elements/table_row.rb +4 -2
- data/lib/page-object/elements/text_area.rb +4 -2
- data/lib/page-object/elements/text_field.rb +4 -2
- data/lib/page-object/elements/unordered_list.rb +4 -2
- data/lib/page-object/elements.rb +1 -0
- data/lib/page-object/nested_elements.rb +16 -0
- data/lib/page-object/platforms/selenium_webdriver/page_object.rb +120 -0
- data/lib/page-object/platforms/watir_webdriver/page_object.rb +100 -0
- data/lib/page-object/version.rb +1 -1
- data/lib/page-object.rb +22 -0
- data/page-object.gemspec +3 -2
- data/spec/page-object/accessors_spec.rb +212 -31
- data/spec/page-object/element_locators_spec.rb +24 -0
- data/spec/page-object/elements/element_spec.rb +9 -250
- data/spec/page-object/elements/nested_element_spec.rb +125 -86
- data/spec/page-object/elements/selenium_element_spec.rb +128 -0
- data/spec/page-object/elements/watir_element_spec.rb +116 -0
- data/spec/page-object/page-object_spec.rb +32 -0
- metadata +30 -10
@@ -3,213 +3,252 @@ require 'page-object/elements'
|
|
3
3
|
|
4
4
|
|
5
5
|
describe "Element with nested elements" do
|
6
|
-
let(:watir_driver) { double('watir') }
|
7
|
-
let(:watir_element) { PageObject::Elements::Element.new(watir_driver, :platform => :watir_webdriver) }
|
8
|
-
let(:selenium_driver) { double('selenium') }
|
9
|
-
let(:selenium_element) { PageObject::Elements::Element.new(selenium_driver, :platform => :selenium_webdriver) }
|
10
|
-
|
11
|
-
|
12
6
|
context "in Watir" do
|
7
|
+
before(:each) do
|
8
|
+
@watir_driver = Watir::Element.new(nil, {})
|
9
|
+
@watir_element = PageObject::Elements::Element.new(@watir_driver, :platform => :watir_webdriver)
|
10
|
+
end
|
11
|
+
|
13
12
|
it "should find nested links" do
|
14
|
-
watir_driver.should_receive(:link).with(:id => 'blah').and_return(watir_driver)
|
15
|
-
watir_element.link_element(:id => 'blah')
|
13
|
+
@watir_driver.should_receive(:link).with(:id => 'blah').and_return(@watir_driver)
|
14
|
+
@watir_element.link_element(:id => 'blah')
|
16
15
|
end
|
17
16
|
|
18
17
|
it "should find nested buttons" do
|
19
|
-
watir_driver.should_receive(:button).with(:id => 'blah').and_return(watir_driver)
|
20
|
-
watir_element.button_element(:id => 'blah')
|
18
|
+
@watir_driver.should_receive(:button).with(:id => 'blah').and_return(@watir_driver)
|
19
|
+
@watir_element.button_element(:id => 'blah')
|
21
20
|
end
|
22
21
|
|
23
22
|
it "should find nested text fields" do
|
24
|
-
watir_driver.should_receive(:text_field).with(:id => 'blah').and_return(watir_driver)
|
25
|
-
watir_element.text_field_element(:id => 'blah')
|
23
|
+
@watir_driver.should_receive(:text_field).with(:id => 'blah').and_return(@watir_driver)
|
24
|
+
@watir_element.text_field_element(:id => 'blah')
|
26
25
|
end
|
27
26
|
|
28
27
|
it "should find nested hidden fields" do
|
29
|
-
watir_driver.should_receive(:hidden).and_return(watir_driver)
|
30
|
-
watir_element.hidden_field_element
|
28
|
+
@watir_driver.should_receive(:hidden).and_return(@watir_driver)
|
29
|
+
@watir_element.hidden_field_element
|
31
30
|
end
|
32
31
|
|
33
32
|
it "should find nested text areas" do
|
34
|
-
watir_driver.should_receive(:textarea).and_return(watir_driver)
|
35
|
-
watir_element.text_area_element
|
33
|
+
@watir_driver.should_receive(:textarea).and_return(@watir_driver)
|
34
|
+
@watir_element.text_area_element
|
36
35
|
end
|
37
36
|
|
38
37
|
it "should find a nested select list" do
|
39
|
-
watir_driver.should_receive(:select_list).and_return(watir_driver)
|
40
|
-
watir_element.select_list_element
|
38
|
+
@watir_driver.should_receive(:select_list).and_return(@watir_driver)
|
39
|
+
@watir_element.select_list_element
|
41
40
|
end
|
42
41
|
|
43
42
|
it "should find a nested checkbox" do
|
44
|
-
watir_driver.should_receive(:checkbox).and_return(watir_driver)
|
45
|
-
watir_element.checkbox_element
|
43
|
+
@watir_driver.should_receive(:checkbox).and_return(@watir_driver)
|
44
|
+
@watir_element.checkbox_element
|
46
45
|
end
|
47
46
|
|
48
47
|
it "should find a nested radio button" do
|
49
|
-
watir_driver.should_receive(:radio).and_return(watir_driver)
|
50
|
-
watir_element.radio_button_element
|
48
|
+
@watir_driver.should_receive(:radio).and_return(@watir_driver)
|
49
|
+
@watir_element.radio_button_element
|
51
50
|
end
|
52
51
|
|
53
52
|
it "should find a nested div" do
|
54
|
-
watir_driver.should_receive(:div).and_return(watir_driver)
|
55
|
-
watir_element.div_element
|
53
|
+
@watir_driver.should_receive(:div).and_return(@watir_driver)
|
54
|
+
@watir_element.div_element
|
56
55
|
end
|
57
56
|
|
58
57
|
it "should find a nested span" do
|
59
|
-
watir_driver.should_receive(:span).and_return(watir_driver)
|
60
|
-
watir_element.span_element
|
58
|
+
@watir_driver.should_receive(:span).and_return(@watir_driver)
|
59
|
+
@watir_element.span_element
|
61
60
|
end
|
62
61
|
|
63
62
|
it "should find a nested table" do
|
64
|
-
watir_driver.should_receive(:table).and_return(watir_driver)
|
65
|
-
watir_element.table_element
|
63
|
+
@watir_driver.should_receive(:table).and_return(@watir_driver)
|
64
|
+
@watir_element.table_element
|
66
65
|
end
|
67
66
|
|
68
67
|
it "should find a nested cell" do
|
69
|
-
watir_driver.should_receive(:td).and_return(watir_driver)
|
70
|
-
watir_element.cell_element
|
68
|
+
@watir_driver.should_receive(:td).and_return(@watir_driver)
|
69
|
+
@watir_element.cell_element
|
71
70
|
end
|
72
71
|
|
73
72
|
it "should find a nested image" do
|
74
|
-
watir_driver.should_receive(:image).and_return(watir_driver)
|
75
|
-
watir_element.image_element
|
73
|
+
@watir_driver.should_receive(:image).and_return(@watir_driver)
|
74
|
+
@watir_element.image_element
|
76
75
|
end
|
77
76
|
|
78
77
|
it "should find a nested form" do
|
79
|
-
watir_driver.should_receive(:form).and_return(watir_driver)
|
80
|
-
watir_element.form_element
|
78
|
+
@watir_driver.should_receive(:form).and_return(@watir_driver)
|
79
|
+
@watir_element.form_element
|
81
80
|
end
|
82
81
|
|
83
82
|
it "should find a nested ordered list" do
|
84
|
-
watir_driver.should_receive(:ol).and_return(watir_driver)
|
85
|
-
watir_element.ordered_list_element
|
83
|
+
@watir_driver.should_receive(:ol).and_return(@watir_driver)
|
84
|
+
@watir_element.ordered_list_element
|
86
85
|
end
|
87
86
|
|
88
87
|
it "should find a nested unordered list" do
|
89
|
-
watir_driver.should_receive(:ul).and_return(watir_driver)
|
90
|
-
watir_element.unordered_list_element
|
88
|
+
@watir_driver.should_receive(:ul).and_return(@watir_driver)
|
89
|
+
@watir_element.unordered_list_element
|
91
90
|
end
|
92
91
|
|
93
92
|
it "should find a nested list item" do
|
94
|
-
watir_driver.should_receive(:li).and_return(watir_driver)
|
95
|
-
watir_element.list_item_element
|
93
|
+
@watir_driver.should_receive(:li).and_return(@watir_driver)
|
94
|
+
@watir_element.list_item_element
|
96
95
|
end
|
97
96
|
|
98
97
|
it "should find a nested h1" do
|
99
|
-
watir_driver.should_receive(:h1).and_return(watir_driver)
|
100
|
-
watir_element.h1_element
|
98
|
+
@watir_driver.should_receive(:h1).and_return(@watir_driver)
|
99
|
+
@watir_element.h1_element
|
101
100
|
end
|
102
101
|
|
103
102
|
it "should find a nested h2" do
|
104
|
-
watir_driver.should_receive(:h2).and_return(watir_driver)
|
105
|
-
watir_element.h2_element
|
103
|
+
@watir_driver.should_receive(:h2).and_return(@watir_driver)
|
104
|
+
@watir_element.h2_element
|
106
105
|
end
|
107
106
|
|
108
107
|
it "should find a nested h3" do
|
109
|
-
watir_driver.should_receive(:h3).and_return(watir_driver)
|
110
|
-
watir_element.h3_element
|
108
|
+
@watir_driver.should_receive(:h3).and_return(@watir_driver)
|
109
|
+
@watir_element.h3_element
|
110
|
+
end
|
111
|
+
|
112
|
+
it "should find a nested h4" do
|
113
|
+
@watir_driver.should_receive(:h4).and_return(@watir_driver)
|
114
|
+
@watir_element.h4_element
|
115
|
+
end
|
116
|
+
|
117
|
+
it "should find a nested h5" do
|
118
|
+
@watir_driver.should_receive(:h5).and_return(@watir_driver)
|
119
|
+
@watir_element.h5_element
|
120
|
+
end
|
121
|
+
|
122
|
+
it "should find a nested h6" do
|
123
|
+
@watir_driver.should_receive(:h6).and_return(@watir_driver)
|
124
|
+
@watir_element.h6_element
|
111
125
|
end
|
112
126
|
end
|
113
127
|
|
114
128
|
context "in Selenium" do
|
129
|
+
before(:each) do
|
130
|
+
@selenium_driver = double('selenium')
|
131
|
+
@selenium_element = PageObject::Elements::Element.new(@selenium_driver, :platform => :selenium_webdriver)
|
132
|
+
end
|
133
|
+
|
115
134
|
it "should find nested links" do
|
116
|
-
selenium_driver.should_receive(:find_element).with(:id, 'blah').and_return(selenium_driver)
|
117
|
-
selenium_element.link_element(:id => 'blah')
|
135
|
+
@selenium_driver.should_receive(:find_element).with(:id, 'blah').and_return(@selenium_driver)
|
136
|
+
@selenium_element.link_element(:id => 'blah')
|
118
137
|
end
|
119
138
|
|
120
139
|
it "should find nested buttons" do
|
121
|
-
selenium_driver.should_receive(:find_element).with(:id, 'blah').and_return(selenium_driver)
|
122
|
-
selenium_element.button_element(:id => 'blah')
|
140
|
+
@selenium_driver.should_receive(:find_element).with(:id, 'blah').and_return(@selenium_driver)
|
141
|
+
@selenium_element.button_element(:id => 'blah')
|
123
142
|
end
|
124
143
|
|
125
144
|
it "should find nested text fields" do
|
126
|
-
selenium_driver.should_receive(:find_element).with(:id, 'blah').and_return(selenium_driver)
|
127
|
-
selenium_element.text_field_element(:id => 'blah')
|
145
|
+
@selenium_driver.should_receive(:find_element).with(:id, 'blah').and_return(@selenium_driver)
|
146
|
+
@selenium_element.text_field_element(:id => 'blah')
|
128
147
|
end
|
129
148
|
|
130
149
|
it "should find nested hidden fields" do
|
131
|
-
selenium_driver.should_receive(:find_element).and_return(selenium_driver)
|
132
|
-
selenium_element.hidden_field_element
|
150
|
+
@selenium_driver.should_receive(:find_element).and_return(@selenium_driver)
|
151
|
+
@selenium_element.hidden_field_element
|
133
152
|
end
|
134
153
|
|
135
154
|
it "should find nested text areas" do
|
136
|
-
selenium_driver.should_receive(:find_element).and_return(selenium_driver)
|
137
|
-
selenium_element.text_area_element
|
155
|
+
@selenium_driver.should_receive(:find_element).and_return(@selenium_driver)
|
156
|
+
@selenium_element.text_area_element
|
138
157
|
end
|
139
158
|
|
140
159
|
it "should find a nested select list" do
|
141
|
-
selenium_driver.should_receive(:find_element).and_return(selenium_driver)
|
142
|
-
selenium_element.select_list_element
|
160
|
+
@selenium_driver.should_receive(:find_element).and_return(@selenium_driver)
|
161
|
+
@selenium_element.select_list_element
|
143
162
|
end
|
144
163
|
|
145
164
|
it "should find a nested checkbox" do
|
146
|
-
selenium_driver.should_receive(:find_element).and_return(selenium_driver)
|
147
|
-
selenium_element.checkbox_element
|
165
|
+
@selenium_driver.should_receive(:find_element).and_return(@selenium_driver)
|
166
|
+
@selenium_element.checkbox_element
|
148
167
|
end
|
149
168
|
|
150
169
|
it "should find a nested radio button" do
|
151
|
-
selenium_driver.should_receive(:find_element).and_return(selenium_driver)
|
152
|
-
selenium_element.radio_button_element
|
170
|
+
@selenium_driver.should_receive(:find_element).and_return(@selenium_driver)
|
171
|
+
@selenium_element.radio_button_element
|
153
172
|
end
|
154
173
|
|
155
174
|
it "should find a nested div" do
|
156
|
-
selenium_driver.should_receive(:find_element).and_return(selenium_driver)
|
157
|
-
selenium_element.div_element
|
175
|
+
@selenium_driver.should_receive(:find_element).and_return(@selenium_driver)
|
176
|
+
@selenium_element.div_element
|
158
177
|
end
|
159
178
|
|
160
179
|
it "should find a nested span" do
|
161
|
-
selenium_driver.should_receive(:find_element).and_return(selenium_driver)
|
162
|
-
selenium_element.span_element
|
180
|
+
@selenium_driver.should_receive(:find_element).and_return(@selenium_driver)
|
181
|
+
@selenium_element.span_element
|
163
182
|
end
|
164
183
|
|
165
184
|
it "should find a nested table" do
|
166
|
-
selenium_driver.should_receive(:find_element).and_return(selenium_driver)
|
167
|
-
selenium_element.table_element
|
185
|
+
@selenium_driver.should_receive(:find_element).and_return(@selenium_driver)
|
186
|
+
@selenium_element.table_element
|
168
187
|
end
|
169
188
|
|
170
189
|
it "should find a nested cell" do
|
171
|
-
selenium_driver.should_receive(:find_element).and_return(selenium_driver)
|
172
|
-
selenium_element.cell_element
|
190
|
+
@selenium_driver.should_receive(:find_element).and_return(@selenium_driver)
|
191
|
+
@selenium_element.cell_element
|
173
192
|
end
|
174
193
|
|
175
194
|
it "should find a nested image" do
|
176
|
-
selenium_driver.should_receive(:find_element).and_return(selenium_driver)
|
177
|
-
selenium_element.image_element
|
195
|
+
@selenium_driver.should_receive(:find_element).and_return(@selenium_driver)
|
196
|
+
@selenium_element.image_element
|
178
197
|
end
|
179
198
|
|
180
199
|
it "should find a nested form" do
|
181
|
-
selenium_driver.should_receive(:find_element).and_return(selenium_driver)
|
182
|
-
selenium_element.form_element
|
200
|
+
@selenium_driver.should_receive(:find_element).and_return(@selenium_driver)
|
201
|
+
@selenium_element.form_element
|
183
202
|
end
|
184
203
|
|
185
204
|
it "should find an ordered list" do
|
186
|
-
selenium_driver.should_receive(:find_element).and_return(selenium_driver)
|
187
|
-
selenium_element.ordered_list_element
|
205
|
+
@selenium_driver.should_receive(:find_element).and_return(@selenium_driver)
|
206
|
+
@selenium_element.ordered_list_element
|
188
207
|
end
|
189
208
|
|
190
209
|
it "should find an unordered list" do
|
191
|
-
selenium_driver.should_receive(:find_element).and_return(selenium_driver)
|
192
|
-
selenium_element.unordered_list_element
|
210
|
+
@selenium_driver.should_receive(:find_element).and_return(@selenium_driver)
|
211
|
+
@selenium_element.unordered_list_element
|
193
212
|
end
|
194
213
|
|
195
214
|
it "should find a nested list item" do
|
196
|
-
selenium_driver.should_receive(:find_element).and_return(selenium_driver)
|
197
|
-
selenium_element.list_item_element
|
215
|
+
@selenium_driver.should_receive(:find_element).and_return(@selenium_driver)
|
216
|
+
@selenium_element.list_item_element
|
198
217
|
end
|
199
218
|
|
200
219
|
it "should find a nested h1" do
|
201
|
-
selenium_driver.should_receive(:find_element).and_return(selenium_driver)
|
202
|
-
selenium_element.h1_element
|
220
|
+
@selenium_driver.should_receive(:find_element).and_return(@selenium_driver)
|
221
|
+
@selenium_element.h1_element
|
203
222
|
end
|
204
223
|
|
205
224
|
it "should find a nested h2" do
|
206
|
-
selenium_driver.should_receive(:find_element).and_return(selenium_driver)
|
207
|
-
selenium_element.h2_element
|
225
|
+
@selenium_driver.should_receive(:find_element).and_return(@selenium_driver)
|
226
|
+
@selenium_element.h2_element
|
208
227
|
end
|
209
228
|
|
210
229
|
it "should find a nested h3" do
|
211
|
-
selenium_driver.should_receive(:find_element).and_return(selenium_driver)
|
212
|
-
selenium_element.h3_element
|
230
|
+
@selenium_driver.should_receive(:find_element).and_return(@selenium_driver)
|
231
|
+
@selenium_element.h3_element
|
232
|
+
end
|
233
|
+
|
234
|
+
it "should find a nested h4" do
|
235
|
+
@selenium_driver.should_receive(:find_element).and_return(@selenium_driver)
|
236
|
+
@selenium_element.h4_element
|
237
|
+
end
|
238
|
+
|
239
|
+
it "should find a nested h5" do
|
240
|
+
@selenium_driver.should_receive(:find_element).and_return(@selenium_driver)
|
241
|
+
@selenium_element.h5_element
|
242
|
+
end
|
243
|
+
|
244
|
+
it "should find a nested h6" do
|
245
|
+
@selenium_driver.should_receive(:find_element).and_return(@selenium_driver)
|
246
|
+
@selenium_element.h6_element
|
247
|
+
end
|
248
|
+
|
249
|
+
it "should find a nested paragraph" do
|
250
|
+
@selenium_driver.should_receive(:find_element).and_return(@selenium_driver)
|
251
|
+
@selenium_element.paragraph_element
|
213
252
|
end
|
214
253
|
end
|
215
254
|
end
|
@@ -0,0 +1,128 @@
|
|
1
|
+
|
2
|
+
describe "Element for Selenium" do
|
3
|
+
before(:each) do
|
4
|
+
@selenium_driver = double('selenium')
|
5
|
+
@selenium_element = ::PageObject::Elements::Element.new(@selenium_driver, :platform => :selenium_webdriver)
|
6
|
+
end
|
7
|
+
|
8
|
+
it "should know when it is visible" do
|
9
|
+
@selenium_driver.should_receive(:displayed?).and_return(true)
|
10
|
+
@selenium_element.visible?.should == true
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should know when it is not visible" do
|
14
|
+
@selenium_driver.should_receive(:displayed?).and_return(false)
|
15
|
+
@selenium_element.visible?.should == false
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should know when it exists" do
|
19
|
+
@selenium_element.exists?.should == true
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should know when it does not exist" do
|
23
|
+
@selenium_element = ::PageObject::Elements::Element.new(nil, :platform => :selenium_webdriver)
|
24
|
+
@selenium_element.exists?.should == false
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should be able to return the text contained in the element" do
|
28
|
+
@selenium_driver.should_receive(:text).and_return("my text")
|
29
|
+
@selenium_element.text.should == "my text"
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should know when it is equal to another" do
|
33
|
+
@selenium_driver.should_receive(:==).and_return(true)
|
34
|
+
@selenium_element.should == @selenium_element
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should return its tag name" do
|
38
|
+
@selenium_driver.should_receive(:tag_name).and_return("h1")
|
39
|
+
@selenium_element.tag_name.should == "h1"
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should know its value" do
|
43
|
+
@selenium_driver.should_receive(:attribute).with('value').and_return("value")
|
44
|
+
@selenium_element.value.should == "value"
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should know how to retrieve the value of an attribute" do
|
48
|
+
@selenium_driver.should_receive(:attribute).and_return(true)
|
49
|
+
@selenium_element.attribute('readonly').should be_true
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should be clickable" do
|
53
|
+
@selenium_driver.should_receive(:click)
|
54
|
+
@selenium_element.click
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should be double clickable" do
|
58
|
+
@selenium_driver.should_receive(:double_click)
|
59
|
+
@selenium_element.double_click
|
60
|
+
end
|
61
|
+
|
62
|
+
it "should be right clickable" do
|
63
|
+
@selenium_driver.should_receive(:context_click)
|
64
|
+
@selenium_element.right_click
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should be able to block until it is present" do
|
68
|
+
wait = double('wait')
|
69
|
+
::Selenium::WebDriver::Wait.should_receive(:new).and_return(wait)
|
70
|
+
wait.should_receive(:until)
|
71
|
+
@selenium_element.when_present(10)
|
72
|
+
end
|
73
|
+
|
74
|
+
it "should return the element when it is present" do
|
75
|
+
wait = double('wait')
|
76
|
+
::Selenium::WebDriver::Wait.should_receive(:new).and_return(wait)
|
77
|
+
wait.should_receive(:until)
|
78
|
+
element = @selenium_element.when_present(10)
|
79
|
+
element.should === @selenium_element
|
80
|
+
end
|
81
|
+
|
82
|
+
it "should be able to block until it is visible" do
|
83
|
+
wait = double('wait')
|
84
|
+
::Selenium::WebDriver::Wait.should_receive(:new).and_return(wait)
|
85
|
+
wait.should_receive(:until)
|
86
|
+
@selenium_element.when_visible(10)
|
87
|
+
end
|
88
|
+
|
89
|
+
it "should return the element when it is visible" do
|
90
|
+
wait = double('wait')
|
91
|
+
::Selenium::WebDriver::Wait.should_receive(:new).and_return(wait)
|
92
|
+
wait.should_receive(:until)
|
93
|
+
element = @selenium_element.when_visible(10)
|
94
|
+
element.should === @selenium_element
|
95
|
+
end
|
96
|
+
|
97
|
+
it "should be able to block until it is not visible" do
|
98
|
+
wait = double('wait')
|
99
|
+
::Selenium::WebDriver::Wait.should_receive(:new).and_return(wait)
|
100
|
+
wait.should_receive(:until)
|
101
|
+
@selenium_element.when_not_visible(10)
|
102
|
+
end
|
103
|
+
|
104
|
+
it "should return the element when it is not visible" do
|
105
|
+
wait = double('wait')
|
106
|
+
::Selenium::WebDriver::Wait.should_receive(:new).and_return(wait)
|
107
|
+
wait.should_receive(:until)
|
108
|
+
element = @selenium_element.when_not_visible(10)
|
109
|
+
element.should === @selenium_element
|
110
|
+
end
|
111
|
+
|
112
|
+
it "should be able to block until a user define event fires true" do
|
113
|
+
wait = double('wait')
|
114
|
+
::Selenium::WebDriver::Wait.should_receive(:new).and_return(wait)
|
115
|
+
wait.should_receive(:until)
|
116
|
+
@selenium_element.wait_until(10, "Element blah") {}
|
117
|
+
end
|
118
|
+
|
119
|
+
it "should send keys to the element" do
|
120
|
+
@selenium_driver.should_receive(:send_keys).with([:control, 'a'])
|
121
|
+
@selenium_element.send_keys([:control, 'a'])
|
122
|
+
end
|
123
|
+
|
124
|
+
it "should clear its' contents" do
|
125
|
+
@selenium_driver.should_receive(:clear)
|
126
|
+
@selenium_element.clear
|
127
|
+
end
|
128
|
+
end
|
@@ -0,0 +1,116 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "Element for Watir" do
|
4
|
+
before(:each) do
|
5
|
+
@watir_driver = ::Watir::Element.new(nil, {})
|
6
|
+
@watir_element = ::PageObject::Elements::Element.new(@watir_driver, :platform => :watir_webdriver)
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should know when it is visible" do
|
10
|
+
@watir_driver.should_receive(:present?).and_return(true)
|
11
|
+
@watir_element.visible?.should == true
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should know when it is not visible" do
|
15
|
+
@watir_driver.should_receive(:present?).and_return(false)
|
16
|
+
@watir_element.visible?.should == false
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should know when it exists" do
|
20
|
+
@watir_driver.should_receive(:exists?).and_return(true)
|
21
|
+
@watir_element.exists?.should == true
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should know when it does not exist" do
|
25
|
+
@watir_driver.should_receive(:exists?).and_return(false)
|
26
|
+
@watir_element.exists?.should == false
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should be able to return the text contained in the element" do
|
30
|
+
@watir_driver.should_receive(:text).and_return("my text")
|
31
|
+
@watir_element.text.should == "my text"
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should know when it is equal to another" do
|
35
|
+
@watir_driver.should_receive(:==).and_return(true)
|
36
|
+
@watir_element.should == @watir_element
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should return its tag name" do
|
40
|
+
@watir_driver.should_receive(:tag_name).and_return("h1")
|
41
|
+
@watir_element.tag_name.should == "h1"
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should know its value" do
|
45
|
+
@watir_driver.should_receive(:value).and_return("value")
|
46
|
+
@watir_element.value.should == "value"
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should know how to retrieve the value of an attribute" do
|
50
|
+
@watir_driver.should_receive(:attribute_value).and_return(true)
|
51
|
+
@watir_element.attribute("readonly").should be_true
|
52
|
+
end
|
53
|
+
|
54
|
+
it "should be clickable" do
|
55
|
+
@watir_driver.should_receive(:click)
|
56
|
+
@watir_element.click
|
57
|
+
end
|
58
|
+
|
59
|
+
it "should be double clickable" do
|
60
|
+
@watir_driver.should_receive(:double_click)
|
61
|
+
@watir_element.double_click
|
62
|
+
end
|
63
|
+
|
64
|
+
it "should be right clickable" do
|
65
|
+
@watir_driver.should_receive(:right_click)
|
66
|
+
@watir_element.right_click
|
67
|
+
end
|
68
|
+
|
69
|
+
it "should be able to block until it is present" do
|
70
|
+
@watir_driver.should_receive(:wait_until_present).with(10)
|
71
|
+
@watir_element.when_present(10)
|
72
|
+
end
|
73
|
+
|
74
|
+
it "should return the element when it is present" do
|
75
|
+
@watir_driver.should_receive(:wait_until_present).with(10)
|
76
|
+
element = @watir_element.when_present(10)
|
77
|
+
element.should === @watir_element
|
78
|
+
end
|
79
|
+
|
80
|
+
it "should be able to block until it is visible" do
|
81
|
+
::Watir::Wait.should_receive(:until).with(10, "Element was not visible in 10 seconds")
|
82
|
+
@watir_element.when_visible(10)
|
83
|
+
end
|
84
|
+
|
85
|
+
it "should return the element when it is visible" do
|
86
|
+
::Watir::Wait.should_receive(:until).with(10, "Element was not visible in 10 seconds")
|
87
|
+
element = @watir_element.when_visible(10)
|
88
|
+
element.should === @watir_element
|
89
|
+
end
|
90
|
+
|
91
|
+
it "should be able to block until it is not visible" do
|
92
|
+
::Watir::Wait.should_receive(:while).with(10, "Element still visible after 10 seconds")
|
93
|
+
@watir_element.when_not_visible(10)
|
94
|
+
end
|
95
|
+
|
96
|
+
it "should return the element when it is not visible" do
|
97
|
+
::Watir::Wait.should_receive(:while).with(10, "Element still visible after 10 seconds")
|
98
|
+
element = @watir_element.when_not_visible(10)
|
99
|
+
element.should === @watir_element
|
100
|
+
end
|
101
|
+
|
102
|
+
it "should be able to block until a user define event fires true" do
|
103
|
+
::Watir::Wait.should_receive(:until).with(10, "Element blah")
|
104
|
+
@watir_element.wait_until(10, "Element blah") {}
|
105
|
+
end
|
106
|
+
|
107
|
+
it "should send keys to the element" do
|
108
|
+
@watir_driver.should_receive(:send_keys).with([:control, 'a'])
|
109
|
+
@watir_element.send_keys([:control, 'a'])
|
110
|
+
end
|
111
|
+
|
112
|
+
it "should clear its' contents" do
|
113
|
+
@watir_driver.should_receive(:clear)
|
114
|
+
@watir_element.clear
|
115
|
+
end
|
116
|
+
end
|
@@ -140,6 +140,22 @@ describe PageObject do
|
|
140
140
|
watir_browser.should_receive(:forward)
|
141
141
|
watir_page_object.forward
|
142
142
|
end
|
143
|
+
|
144
|
+
it "should know its' current url" do
|
145
|
+
watir_browser.should_receive(:url).and_return("cheezyworld.com")
|
146
|
+
watir_page_object.current_url.should == "cheezyworld.com"
|
147
|
+
end
|
148
|
+
|
149
|
+
it "should know how to clear all of the cookies from the browser" do
|
150
|
+
watir_browser.should_receive(:clear_cookies)
|
151
|
+
watir_page_object.clear_cookies
|
152
|
+
end
|
153
|
+
|
154
|
+
it "should be able to save a screenshot" do
|
155
|
+
watir_browser.should_receive(:wd).and_return(watir_browser)
|
156
|
+
watir_browser.should_receive(:save_screenshot)
|
157
|
+
watir_page_object.save_screenshot("test.png")
|
158
|
+
end
|
143
159
|
end
|
144
160
|
|
145
161
|
context "when using SeleniumPageObject" do
|
@@ -225,6 +241,22 @@ describe PageObject do
|
|
225
241
|
selenium_browser.should_receive(:forward)
|
226
242
|
selenium_page_object.forward
|
227
243
|
end
|
244
|
+
|
245
|
+
it "should know its' current url" do
|
246
|
+
selenium_browser.should_receive(:current_url).and_return("cheezyworld.com")
|
247
|
+
selenium_page_object.current_url.should == "cheezyworld.com"
|
248
|
+
end
|
249
|
+
|
250
|
+
it "should clear all of the cookies from the browser" do
|
251
|
+
selenium_browser.should_receive(:manage).and_return(selenium_browser)
|
252
|
+
selenium_browser.should_receive(:delete_all_cookies)
|
253
|
+
selenium_page_object.clear_cookies
|
254
|
+
end
|
255
|
+
|
256
|
+
it "should be able to save a screenshot" do
|
257
|
+
selenium_browser.should_receive(:save_screenshot)
|
258
|
+
selenium_page_object.save_screenshot("test.png")
|
259
|
+
end
|
228
260
|
end
|
229
261
|
end
|
230
262
|
end
|