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.
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