page-object 0.3.2 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. data/ChangeLog +16 -0
  2. data/features/headings.feature +42 -6
  3. data/features/html/nested_elements.html +11 -5
  4. data/features/html/static_elements.html +1 -1
  5. data/features/nested_elements.feature +19 -3
  6. data/features/paragraph.feature +33 -0
  7. data/features/step_definitions/nested_elements_steps.rb +12 -16
  8. data/features/step_definitions/paragraph_steps.rb +16 -0
  9. data/features/support/page.rb +32 -0
  10. data/lib/page-object/accessors.rb +116 -0
  11. data/lib/page-object/element_locators.rb +60 -0
  12. data/lib/page-object/elements/button.rb +3 -1
  13. data/lib/page-object/elements/check_box.rb +4 -2
  14. data/lib/page-object/elements/element.rb +23 -3
  15. data/lib/page-object/elements/form.rb +4 -2
  16. data/lib/page-object/elements/image.rb +4 -2
  17. data/lib/page-object/elements/link.rb +3 -1
  18. data/lib/page-object/elements/ordered_list.rb +4 -2
  19. data/lib/page-object/elements/paragraph.rb +7 -0
  20. data/lib/page-object/elements/radio_button.rb +4 -2
  21. data/lib/page-object/elements/select_list.rb +4 -2
  22. data/lib/page-object/elements/table.rb +4 -2
  23. data/lib/page-object/elements/table_row.rb +4 -2
  24. data/lib/page-object/elements/text_area.rb +4 -2
  25. data/lib/page-object/elements/text_field.rb +4 -2
  26. data/lib/page-object/elements/unordered_list.rb +4 -2
  27. data/lib/page-object/elements.rb +1 -0
  28. data/lib/page-object/nested_elements.rb +16 -0
  29. data/lib/page-object/platforms/selenium_webdriver/page_object.rb +120 -0
  30. data/lib/page-object/platforms/watir_webdriver/page_object.rb +100 -0
  31. data/lib/page-object/version.rb +1 -1
  32. data/lib/page-object.rb +22 -0
  33. data/page-object.gemspec +3 -2
  34. data/spec/page-object/accessors_spec.rb +212 -31
  35. data/spec/page-object/element_locators_spec.rb +24 -0
  36. data/spec/page-object/elements/element_spec.rb +9 -250
  37. data/spec/page-object/elements/nested_element_spec.rb +125 -86
  38. data/spec/page-object/elements/selenium_element_spec.rb +128 -0
  39. data/spec/page-object/elements/watir_element_spec.rb +116 -0
  40. data/spec/page-object/page-object_spec.rb +32 -0
  41. 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