page-object 0.6.4 → 0.6.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -89,12 +89,12 @@ module PageObject
89
89
  # delegate calls to driver element
90
90
  def method_missing(*args, &block)
91
91
  m = args.shift
92
- puts "*** DEPRECATION WARNING"
93
- puts "*** You are calling a method named #{m} at #{caller[0]}."
94
- puts "*** This method does not exist in page-object so it is being passed to the driver."
95
- puts "*** This feature will be removed in the near future."
96
- puts "*** Please change your code to call the correct page-object method."
97
- puts "*** If you are using functionality that does not exist in page-object please request it be added."
92
+ $stderr.puts "*** DEPRECATION WARNING"
93
+ $stderr.puts "*** You are calling a method named #{m} at #{caller[0]}."
94
+ $stderr.puts "*** This method does not exist in page-object so it is being passed to the driver."
95
+ $stderr.puts "*** This feature will be removed in the near future."
96
+ $stderr.puts "*** Please change your code to call the correct page-object method."
97
+ $stderr.puts "*** If you are using functionality that does not exist in page-object please request it be added."
98
98
  begin
99
99
  element.send m, *args, &block
100
100
  rescue Exception => e
@@ -172,7 +172,7 @@ module PageObject
172
172
 
173
173
  def self.identifier_for identifier, find_by, find_by_mapping
174
174
  how, what = identifier.keys.first, identifier.values.first
175
- return how => what if find_by.include? how
175
+ return how => what if find_by.include? how or how == :tag_name
176
176
  return find_by_mapping[how] => what if find_by_mapping[how]
177
177
  return nil => what
178
178
  end
@@ -9,19 +9,11 @@ module PageObject
9
9
  protected
10
10
 
11
11
  def self.watir_finders
12
- super + [:tag_name, :text, :value]
13
- end
14
-
15
- def self.watir_mapping
16
- super.merge({:css => :tag_name})
12
+ super + [:text, :value]
17
13
  end
18
14
 
19
15
  def self.selenium_finders
20
- super + [:css, :value]
21
- end
22
-
23
- def self.selenium_mapping
24
- super.merge({:tag_name => :css})
16
+ super + [:value]
25
17
  end
26
18
  end
27
19
 
@@ -10,22 +10,6 @@ module PageObject
10
10
 
11
11
  protected
12
12
 
13
- def self.watir_finders
14
- super + [:tag_name]
15
- end
16
-
17
- def self.watir_mapping
18
- super.merge({:css => :tag_name})
19
- end
20
-
21
- def self.selenium_finders
22
- super + [:css]
23
- end
24
-
25
- def self.selenium_mapping
26
- super.merge({:tag_name => :css})
27
- end
28
-
29
13
  def include_platform_for platform
30
14
  super
31
15
  if platform[:platform] == :watir_webdriver
@@ -15,19 +15,11 @@ module PageObject
15
15
  protected
16
16
 
17
17
  def self.watir_finders
18
- super + [:tag_name, :title]
19
- end
20
-
21
- def self.watir_mapping
22
- super.merge({:css => :tag_name})
18
+ super + [:title]
23
19
  end
24
20
 
25
21
  def self.selenium_finders
26
- super + [:css, :title]
27
- end
28
-
29
- def self.selenium_mapping
30
- super.merge({:tag_name => :css})
22
+ super + [:title]
31
23
  end
32
24
 
33
25
  def include_platform_for platform
@@ -0,0 +1,28 @@
1
+ module PageObject
2
+ module Platforms
3
+ module SeleniumWebDriver
4
+ class NullSeleniumElement
5
+ def exists?
6
+ false
7
+ end
8
+
9
+ def visible?
10
+ false
11
+ end
12
+
13
+ def nil?
14
+ true
15
+ end
16
+
17
+ def displayed?
18
+ false
19
+ end
20
+
21
+ def method_missing(meth, *args)
22
+ $stderr.puts "You are calling #{meth} on an element that does not yet exist."
23
+ raise Selenium::WebDriver::Error::NoSuchElementError
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -850,6 +850,13 @@ module PageObject
850
850
  find_selenium_element(identifier, Elements::FileField, 'input', :type => 'file')
851
851
  end
852
852
 
853
+ #
854
+ # platform method to return an array of file field elements
855
+ #
856
+ def file_fields_for(identifier)
857
+ find_selenium_elements(identifier, Elements::FileField, 'input', :type => 'file')
858
+ end
859
+
853
860
  #
854
861
  # platform method to retrieve a generic element
855
862
  # See PageObject::Accessors#element
@@ -911,6 +918,7 @@ module PageObject
911
918
  end
912
919
 
913
920
  def supported_identifier(identifier, tag, additional)
921
+ return false if identifier.size == 0
914
922
  return false if identifier[:index]
915
923
  return false if identifier[:action] and tag == 'form'
916
924
  return false if identifier[:alt] and tag == 'img'
@@ -207,7 +207,8 @@ module PageObject
207
207
  # platform method to retrieve an array of text field elements
208
208
  #
209
209
  def text_fields_for(identifier)
210
- find_watir_elements("text_fields(identifier)", Elements::TextField, identifier)
210
+ elements = find_watir_elements("text_fields(identifier)", Elements::TextField, identifier)
211
+ elements.select {|e| e.element.tag_name == 'input'}
211
212
  end
212
213
 
213
214
  #
@@ -798,6 +799,14 @@ module PageObject
798
799
  find_watir_element("file_field(identifier)", Elements::FileField, identifier)
799
800
  end
800
801
 
802
+ #
803
+ # platform method to retrieve an array of file field elements
804
+ #
805
+ def file_fields_for(identifier)
806
+ find_watir_elements("file_fields(identifier)", Elements::FileField, identifier)
807
+
808
+ end
809
+
801
810
  #
802
811
  # platform method to return a PageObject::Elements::Element element
803
812
  # See PageObject::Accessors#elem
@@ -1,4 +1,4 @@
1
1
  module PageObject
2
2
  # @private
3
- VERSION = "0.6.4"
3
+ VERSION = "0.6.5"
4
4
  end
data/page-object.gemspec CHANGED
@@ -20,7 +20,7 @@ Gem::Specification.new do |s|
20
20
  s.require_paths = ["lib"]
21
21
 
22
22
  s.add_dependency 'watir-webdriver', '>= 0.5.4'
23
- s.add_dependency 'selenium-webdriver', '>= 2.20.0'
23
+ s.add_dependency 'selenium-webdriver', '>= 2.21.0'
24
24
 
25
25
  s.add_development_dependency 'rspec', '>= 2.6.0'
26
26
  s.add_development_dependency 'cucumber', '>= 1.1.0'
@@ -184,6 +184,185 @@ describe PageObject::Accessors do
184
184
  end
185
185
  end
186
186
 
187
+ describe "using default identifiers" do
188
+ class DefaultIdentifier
189
+ include PageObject
190
+ text_field(:default_tf)
191
+ hidden_field(:default_hf)
192
+ text_area(:default_ta)
193
+ select_list(:default_sl)
194
+ link(:default_link)
195
+ checkbox(:default_cb)
196
+ radio_button(:default_rb)
197
+ button(:default_but)
198
+ div(:default_div)
199
+ span(:default_span)
200
+ table(:default_tab)
201
+ cell(:default_cell)
202
+ image(:default_im)
203
+ form(:default_form)
204
+ list_item(:default_li)
205
+ unordered_list(:default_ul)
206
+ ordered_list(:default_ol)
207
+ h1(:default_h1)
208
+ h2(:default_h2)
209
+ h3(:default_h3)
210
+ h4(:default_h4)
211
+ h5(:default_h5)
212
+ h6(:default_h6)
213
+ paragraph(:default_p)
214
+ file_field(:default_ff)
215
+ label(:default_lab)
216
+ element(:default_el, :audio)
217
+ end
218
+
219
+ let(:default_identifier) { DefaultIdentifier.new(watir_browser) }
220
+
221
+ before(:each) do
222
+ watir_browser.should_receive(:exists?).and_return(true)
223
+ end
224
+
225
+ def mock_driver_for(tag)
226
+ watir_browser.should_receive(tag).with(:index => 0).and_return(watir_browser)
227
+ end
228
+
229
+ it "should work with a text_field" do
230
+ mock_driver_for :text_field
231
+ default_identifier.default_tf?
232
+ end
233
+
234
+ it "should work with a hidden field" do
235
+ mock_driver_for :hidden
236
+ default_identifier.default_hf?
237
+ end
238
+
239
+ it "should work with a text area" do
240
+ mock_driver_for :textarea
241
+ default_identifier.default_ta?
242
+ end
243
+
244
+ it "should work with a select list" do
245
+ mock_driver_for :select_list
246
+ default_identifier.default_sl?
247
+ end
248
+
249
+ it "should work with a link" do
250
+ mock_driver_for :link
251
+ default_identifier.default_link?
252
+ end
253
+
254
+ it "should work with a checkbox" do
255
+ mock_driver_for :checkbox
256
+ default_identifier.default_cb?
257
+ end
258
+
259
+ it "should work with a radio button" do
260
+ mock_driver_for :radio
261
+ default_identifier.default_rb?
262
+ end
263
+
264
+ it "should work with a button" do
265
+ mock_driver_for :button
266
+ default_identifier.default_but?
267
+ end
268
+
269
+ it "should work with a div" do
270
+ mock_driver_for :div
271
+ default_identifier.default_div?
272
+ end
273
+
274
+ it "should work with a span" do
275
+ mock_driver_for :span
276
+ default_identifier.default_span?
277
+ end
278
+
279
+ it "should work for a table" do
280
+ mock_driver_for :table
281
+ default_identifier.default_tab?
282
+ end
283
+
284
+ it "should work for a cell" do
285
+ mock_driver_for :td
286
+ default_identifier.default_cell?
287
+ end
288
+
289
+ it "should work for an image" do
290
+ mock_driver_for :image
291
+ default_identifier.default_im?
292
+ end
293
+
294
+ it "should work for a form" do
295
+ mock_driver_for :form
296
+ default_identifier.default_form?
297
+ end
298
+
299
+ it "should work for a list item" do
300
+ mock_driver_for :li
301
+ default_identifier.default_li?
302
+ end
303
+
304
+ it "should work for unordered lists" do
305
+ mock_driver_for :ul
306
+ default_identifier.default_ul?
307
+ end
308
+
309
+ it "should work for ordered lists" do
310
+ mock_driver_for :ol
311
+ default_identifier.default_ol?
312
+ end
313
+
314
+ it "should work for h1" do
315
+ mock_driver_for :h1
316
+ default_identifier.default_h1?
317
+ end
318
+
319
+ it "should work for h2" do
320
+ mock_driver_for :h2
321
+ default_identifier.default_h2?
322
+ end
323
+
324
+ it "should work for h3" do
325
+ mock_driver_for :h3
326
+ default_identifier.default_h3?
327
+ end
328
+
329
+ it "should work for a h4" do
330
+ mock_driver_for :h4
331
+ default_identifier.default_h4?
332
+ end
333
+
334
+ it "should work for a h5" do
335
+ mock_driver_for :h5
336
+ default_identifier.default_h5?
337
+ end
338
+
339
+ it "should work for a h6" do
340
+ mock_driver_for :h6
341
+ default_identifier.default_h6?
342
+ end
343
+
344
+ it "should work with a paragraph" do
345
+ mock_driver_for :p
346
+ default_identifier.default_p?
347
+ end
348
+
349
+ it "should work with a file_field" do
350
+ mock_driver_for :file_field
351
+ default_identifier.default_ff?
352
+ end
353
+
354
+ it "should work with a label" do
355
+ mock_driver_for :label
356
+ default_identifier.default_lab?
357
+ end
358
+
359
+ it "should work with an element" do
360
+ mock_driver_for :audio
361
+ default_identifier.default_el?
362
+ end
363
+
364
+ end
365
+
187
366
  describe "link accessors" do
188
367
  context "when called on a page object" do
189
368
  it "should generate accessor methods" do
@@ -232,6 +411,7 @@ describe PageObject::Accessors do
232
411
  watir_page_object.should respond_to(:first_name=)
233
412
  watir_page_object.should respond_to(:first_name_element)
234
413
  watir_page_object.should respond_to(:first_name_text_field)
414
+ watir_page_object.should respond_to(:first_name?)
235
415
  end
236
416
 
237
417
  it "should call a block on the element method when present" do
@@ -17,11 +17,21 @@ describe PageObject::ElementLocators do
17
17
  element.should be_instance_of PageObject::Elements::Button
18
18
  end
19
19
 
20
+ it "should find a button element using a default identifier" do
21
+ watir_browser.should_receive(:button).with(:index => 0).and_return(watir_browser)
22
+ watir_page_object.button_element
23
+ end
24
+
20
25
  it "should find all button elements" do
21
26
  watir_browser.should_receive(:buttons).with(:id => 'blah').and_return([watir_browser])
22
27
  elements = watir_page_object.button_elements(:id => 'blah')
23
28
  elements[0].should be_instance_of PageObject::Elements::Button
24
29
  end
30
+
31
+ it "should find all buttons with no identifier" do
32
+ watir_browser.should_receive(:buttons).with({}).and_return([watir_browser])
33
+ watir_page_object.button_elements
34
+ end
25
35
 
26
36
  it "should find a text field element" do
27
37
  watir_browser.should_receive(:text_field).with(:id => 'blah').and_return(watir_browser)
@@ -29,11 +39,23 @@ describe PageObject::ElementLocators do
29
39
  element.should be_instance_of PageObject::Elements::TextField
30
40
  end
31
41
 
42
+ it "should find a text field element using a default identifier" do
43
+ watir_browser.should_receive(:text_field).with(:index => 0).and_return(watir_browser)
44
+ watir_page_object.text_field_element
45
+ end
46
+
32
47
  it "should find all text field elements" do
33
48
  watir_browser.should_receive(:text_fields).with(:id => 'blah').and_return([watir_browser])
49
+ watir_browser.should_receive(:tag_name).and_return('input')
34
50
  elements = watir_page_object.text_field_elements(:id => 'blah')
35
51
  elements[0].should be_instance_of PageObject::Elements::TextField
36
52
  end
53
+
54
+ it "should find all text fields with no identifier" do
55
+ watir_browser.should_receive(:text_fields).with({}).and_return([watir_browser])
56
+ watir_browser.should_receive(:tag_name).and_return('input')
57
+ watir_page_object.text_field_elements
58
+ end
37
59
 
38
60
  it "should find a hidden field element" do
39
61
  watir_browser.should_receive(:hidden).with(:id => 'blah').and_return(watir_browser)
@@ -41,11 +63,21 @@ describe PageObject::ElementLocators do
41
63
  element.should be_instance_of PageObject::Elements::HiddenField
42
64
  end
43
65
 
66
+ it "should find a hidden field using a default identifier" do
67
+ watir_browser.should_receive(:hidden).with(:index => 0).and_return(watir_browser)
68
+ watir_page_object.hidden_field_element
69
+ end
70
+
44
71
  it "should find all hidden field elements" do
45
72
  watir_browser.should_receive(:hiddens).with(:id => 'blah').and_return([watir_browser])
46
73
  elements = watir_page_object.hidden_field_elements(:id => 'blah')
47
74
  elements[0].should be_instance_of(PageObject::Elements::HiddenField)
48
75
  end
76
+
77
+ it "should find all hidden field elements using no identifier" do
78
+ watir_browser.should_receive(:hiddens).with({}).and_return([watir_browser])
79
+ watir_page_object.hidden_field_elements
80
+ end
49
81
 
50
82
  it "should find a text area element" do
51
83
  watir_browser.should_receive(:textarea).with(:id => 'blah').and_return(watir_browser)
@@ -53,11 +85,21 @@ describe PageObject::ElementLocators do
53
85
  element.should be_instance_of PageObject::Elements::TextArea
54
86
  end
55
87
 
88
+ it "should find a text area using a default identifier" do
89
+ watir_browser.should_receive(:textarea).with(:index => 0).and_return(watir_browser)
90
+ watir_page_object.text_area_element
91
+ end
92
+
56
93
  it "should find all text area elements" do
57
94
  watir_browser.should_receive(:textareas).with(:id => 'blah').and_return([watir_browser])
58
95
  elements = watir_page_object.text_area_elements(:id => 'blah')
59
96
  elements[0].should be_instance_of PageObject::Elements::TextArea
60
97
  end
98
+
99
+ it "should find all text area elements using no identifier" do
100
+ watir_browser.should_receive(:textareas).with({}).and_return([watir_browser])
101
+ watir_page_object.text_area_elements
102
+ end
61
103
 
62
104
  it "should find a select list element" do
63
105
  watir_browser.should_receive(:select_list).with(:id => 'blah').and_return(watir_browser)
@@ -65,11 +107,21 @@ describe PageObject::ElementLocators do
65
107
  element.should be_instance_of PageObject::Elements::SelectList
66
108
  end
67
109
 
110
+ it "should find a select list using a default identifier" do
111
+ watir_browser.should_receive(:select_list).with(:index => 0).and_return(watir_browser)
112
+ watir_page_object.select_list_element
113
+ end
114
+
68
115
  it "should find all select list elements" do
69
116
  watir_browser.should_receive(:select_lists).with(:id => 'blah').and_return([watir_browser])
70
117
  elements = watir_page_object.select_list_elements(:id => 'blah')
71
118
  elements[0].should be_instance_of PageObject::Elements::SelectList
72
119
  end
120
+
121
+ it "should find all select list elements using no identifier" do
122
+ watir_browser.should_receive(:select_lists).with({}).and_return([watir_browser])
123
+ watir_page_object.select_list_elements
124
+ end
73
125
 
74
126
  it "should find a link element" do
75
127
  watir_browser.should_receive(:link).with(:id => 'blah').and_return(watir_browser)
@@ -77,11 +129,21 @@ describe PageObject::ElementLocators do
77
129
  element.should be_instance_of PageObject::Elements::Link
78
130
  end
79
131
 
132
+ it "should find a link element using a default identifier" do
133
+ watir_browser.should_receive(:link).with(:index => 0).and_return(watir_browser)
134
+ watir_page_object.link_element
135
+ end
136
+
80
137
  it "should find all link elements" do
81
138
  watir_browser.should_receive(:links).with(:id => 'blah').and_return([watir_browser])
82
139
  elements = watir_page_object.link_elements(:id => 'blah')
83
140
  elements[0].should be_instance_of PageObject::Elements::Link
84
141
  end
142
+
143
+ it "should find all links using no identifier" do
144
+ watir_browser.should_receive(:links).with({}).and_return([watir_browser])
145
+ watir_page_object.link_elements
146
+ end
85
147
 
86
148
  it "should find a check box" do
87
149
  watir_browser.should_receive(:checkbox).with(:id => 'blah').and_return(watir_browser)
@@ -89,11 +151,21 @@ describe PageObject::ElementLocators do
89
151
  element.should be_instance_of PageObject::Elements::CheckBox
90
152
  end
91
153
 
154
+ it "should find a check box using a default identifier" do
155
+ watir_browser.should_receive(:checkbox).with(:index => 0).and_return(watir_browser)
156
+ watir_page_object.checkbox_element
157
+ end
158
+
92
159
  it "should find all check box elements" do
93
160
  watir_browser.should_receive(:checkboxes).with(:id => 'blah').and_return([watir_browser])
94
161
  elements = watir_page_object.checkbox_elements(:id => 'blah')
95
162
  elements[0].should be_instance_of PageObject::Elements::CheckBox
96
163
  end
164
+
165
+ it "should find all check box elements using no identifier" do
166
+ watir_browser.should_receive(:checkboxes).with({}).and_return([watir_browser])
167
+ watir_page_object.checkbox_elements
168
+ end
97
169
 
98
170
  it "should find a radio button" do
99
171
  watir_browser.should_receive(:radio).with(:id => 'blah').and_return(watir_browser)
@@ -101,11 +173,21 @@ describe PageObject::ElementLocators do
101
173
  element.should be_instance_of PageObject::Elements::RadioButton
102
174
  end
103
175
 
176
+ it "should find a radio button using a default identifier" do
177
+ watir_browser.should_receive(:radio).with(:index => 0).and_return(watir_browser)
178
+ watir_page_object.radio_button_element
179
+ end
180
+
104
181
  it "should find all radio buttons" do
105
182
  watir_browser.should_receive(:radios).with(:id => 'blah').and_return([watir_browser])
106
183
  elements = watir_page_object.radio_button_elements(:id => 'blah')
107
184
  elements[0].should be_instance_of PageObject::Elements::RadioButton
108
185
  end
186
+
187
+ it "should find all radio buttons using no identifier" do
188
+ watir_browser.should_receive(:radios).with({}).and_return([watir_browser])
189
+ watir_page_object.radio_button_elements
190
+ end
109
191
 
110
192
  it "should find a div" do
111
193
  watir_browser.should_receive(:div).with(:id => 'blah').and_return(watir_browser)
@@ -113,11 +195,21 @@ describe PageObject::ElementLocators do
113
195
  element.should be_instance_of PageObject::Elements::Div
114
196
  end
115
197
 
198
+ it "should find a div using a default identifier" do
199
+ watir_browser.should_receive(:div).with(:index => 0).and_return(watir_browser)
200
+ watir_page_object.div_element
201
+ end
202
+
116
203
  it "should find all div elements" do
117
204
  watir_browser.should_receive(:divs).with(:id => 'blah').and_return([watir_browser])
118
205
  elements = watir_page_object.div_elements(:id => 'blah')
119
206
  elements[0].should be_instance_of PageObject::Elements::Div
120
207
  end
208
+
209
+ it "should find all div elements using no identifier" do
210
+ watir_browser.should_receive(:divs).with({}).and_return([watir_browser])
211
+ watir_page_object.div_elements
212
+ end
121
213
 
122
214
  it "should find a span" do
123
215
  watir_browser.should_receive(:span).with(:id => 'blah').and_return(watir_browser)
@@ -125,11 +217,21 @@ describe PageObject::ElementLocators do
125
217
  element.should be_instance_of PageObject::Elements::Span
126
218
  end
127
219
 
220
+ it "should find a span using a default identifier" do
221
+ watir_browser.should_receive(:span).with(:index => 0).and_return(watir_browser)
222
+ watir_page_object.span_element
223
+ end
224
+
128
225
  it "should find all span elements" do
129
226
  watir_browser.should_receive(:spans).with(:id => 'blah').and_return([watir_browser])
130
227
  elements = watir_page_object.span_elements(:id => 'blah')
131
228
  elements[0].should be_instance_of PageObject::Elements::Span
132
229
  end
230
+
231
+ it "should find all span elements using no identifier" do
232
+ watir_browser.should_receive(:spans).with({}).and_return([watir_browser])
233
+ watir_page_object.span_elements
234
+ end
133
235
 
134
236
  it "should find a table" do
135
237
  watir_browser.should_receive(:table).with(:id => 'blah').and_return(watir_browser)
@@ -137,11 +239,21 @@ describe PageObject::ElementLocators do
137
239
  element.should be_instance_of PageObject::Elements::Table
138
240
  end
139
241
 
242
+ it "should find a table using a default identifier" do
243
+ watir_browser.should_receive(:table).with(:index => 0).and_return(watir_browser)
244
+ watir_page_object.table_element
245
+ end
246
+
140
247
  it "should find all table elements" do
141
248
  watir_browser.should_receive(:tables).with(:id => 'blah').and_return([watir_browser])
142
249
  elements = watir_page_object.table_elements(:id => 'blah')
143
250
  elements[0].should be_instance_of PageObject::Elements::Table
144
251
  end
252
+
253
+ it "should find all table elements using no identifier" do
254
+ watir_browser.should_receive(:tables).with({}).and_return([watir_browser])
255
+ watir_page_object.table_elements
256
+ end
145
257
 
146
258
  it "should find a table cell" do
147
259
  watir_browser.should_receive(:td).with(:id => 'blah').and_return(watir_browser)
@@ -149,11 +261,21 @@ describe PageObject::ElementLocators do
149
261
  element.should be_instance_of PageObject::Elements::TableCell
150
262
  end
151
263
 
264
+ it "should find a table cell using a default identifier" do
265
+ watir_browser.should_receive(:td).with(:index => 0).and_return(watir_browser)
266
+ watir_page_object.cell_element
267
+ end
268
+
152
269
  it "should find all table cells" do
153
270
  watir_browser.should_receive(:tds).with(:id => 'blah').and_return([watir_browser])
154
271
  elements = watir_page_object.cell_elements(:id => 'blah')
155
272
  elements[0].should be_instance_of PageObject::Elements::TableCell
156
273
  end
274
+
275
+ it "should find all table cells using no identifier" do
276
+ watir_browser.should_receive(:tds).with({}).and_return([watir_browser])
277
+ watir_page_object.cell_elements
278
+ end
157
279
 
158
280
  it "should find an image" do
159
281
  watir_browser.should_receive(:image).with(:id => 'blah').and_return(watir_browser)
@@ -161,11 +283,21 @@ describe PageObject::ElementLocators do
161
283
  element.should be_instance_of PageObject::Elements::Image
162
284
  end
163
285
 
286
+ it "should find an image using a default identifier" do
287
+ watir_browser.should_receive(:image).with(:index => 0).and_return(watir_browser)
288
+ watir_page_object.image_element
289
+ end
290
+
164
291
  it "should find all images" do
165
292
  watir_browser.should_receive(:images).with(:id => 'blah').and_return([watir_browser])
166
293
  elements = watir_page_object.image_elements(:id => 'blah')
167
294
  elements[0].should be_instance_of PageObject::Elements::Image
168
295
  end
296
+
297
+ it "should find all images using no identifier" do
298
+ watir_browser.should_receive(:images).with({}).and_return([watir_browser])
299
+ watir_page_object.image_elements
300
+ end
169
301
 
170
302
  it "should find a form" do
171
303
  watir_browser.should_receive(:form).with(:id => 'blah').and_return(watir_browser)
@@ -173,11 +305,21 @@ describe PageObject::ElementLocators do
173
305
  element.should be_instance_of PageObject::Elements::Form
174
306
  end
175
307
 
308
+ it "should find a form using a default identifier" do
309
+ watir_browser.should_receive(:form).with(:index => 0).and_return(watir_browser)
310
+ watir_page_object.form_element
311
+ end
312
+
176
313
  it "should find all forms" do
177
314
  watir_browser.should_receive(:forms).with(:id => 'blah').and_return([watir_browser])
178
315
  elements = watir_page_object.form_elements(:id => 'blah')
179
316
  elements[0].should be_instance_of PageObject::Elements::Form
180
317
  end
318
+
319
+ it "should find all forms using no identifier" do
320
+ watir_browser.should_receive(:forms).with({}).and_return([watir_browser])
321
+ watir_page_object.form_elements
322
+ end
181
323
 
182
324
  it "should find a list item" do
183
325
  watir_browser.should_receive(:li).with(:id => 'blah').and_return(watir_browser)
@@ -185,11 +327,21 @@ describe PageObject::ElementLocators do
185
327
  element.should be_instance_of PageObject::Elements::ListItem
186
328
  end
187
329
 
330
+ it "should find a list item using a default identifier" do
331
+ watir_browser.should_receive(:li).with(:index => 0).and_return(watir_browser)
332
+ watir_page_object.list_item_element
333
+ end
334
+
188
335
  it "should find all list items" do
189
336
  watir_browser.should_receive(:lis).with(:id => 'blah').and_return([watir_browser])
190
337
  elements = watir_page_object.list_item_elements(:id => 'blah')
191
338
  elements[0].should be_instance_of PageObject::Elements::ListItem
192
339
  end
340
+
341
+ it "should find all list items using no parameter" do
342
+ watir_browser.should_receive(:lis).with({}).and_return([watir_browser])
343
+ watir_page_object.list_item_elements
344
+ end
193
345
 
194
346
  it "should find an unordered list" do
195
347
  watir_browser.should_receive(:ul).with(:id => 'blah').and_return(watir_browser)
@@ -197,11 +349,21 @@ describe PageObject::ElementLocators do
197
349
  element.should be_instance_of PageObject::Elements::UnorderedList
198
350
  end
199
351
 
352
+ it "should find an unordered list using a default identifier" do
353
+ watir_browser.should_receive(:ul).with(:index => 0).and_return(watir_browser)
354
+ watir_page_object.unordered_list_element
355
+ end
356
+
200
357
  it "should find all unordered lists" do
201
358
  watir_browser.should_receive(:uls).with(:id => 'blah').and_return([watir_browser])
202
359
  elements = watir_page_object.unordered_list_elements(:id => 'blah')
203
360
  elements[0].should be_instance_of PageObject::Elements::UnorderedList
204
361
  end
362
+
363
+ it "should find all unordered lists using no parameters" do
364
+ watir_browser.should_receive(:uls).with({}).and_return([watir_browser])
365
+ watir_page_object.unordered_list_elements
366
+ end
205
367
 
206
368
  it "should find an ordered list" do
207
369
  watir_browser.should_receive(:ol).with(:id => 'blah').and_return(watir_browser)
@@ -209,11 +371,21 @@ describe PageObject::ElementLocators do
209
371
  element.should be_instance_of PageObject::Elements::OrderedList
210
372
  end
211
373
 
374
+ it "should find an orderd list using a default identifier" do
375
+ watir_browser.should_receive(:ol).with(:index => 0).and_return(watir_browser)
376
+ watir_page_object.ordered_list_element
377
+ end
378
+
212
379
  it "should find all ordered lists" do
213
380
  watir_browser.should_receive(:ols).with(:id => 'blah').and_return([watir_browser])
214
381
  elements = watir_page_object.ordered_list_elements(:id => 'blah')
215
382
  elements[0].should be_instance_of PageObject::Elements::OrderedList
216
383
  end
384
+
385
+ it "should find all orderd lists using no parameters" do
386
+ watir_browser.should_receive(:ols).with({}).and_return([watir_browser])
387
+ watir_page_object.ordered_list_elements
388
+ end
217
389
 
218
390
  it "should find a h1 element" do
219
391
  watir_browser.should_receive(:h1).with(:id => 'blah').and_return(watir_browser)
@@ -221,101 +393,208 @@ describe PageObject::ElementLocators do
221
393
  element.should be_instance_of PageObject::Elements::Heading
222
394
  end
223
395
 
224
- it "shoudl find all h1 elements" do
396
+ it "should find a h1 element using a default identifier" do
397
+ watir_browser.should_receive(:h1).with(:index => 0).and_return(watir_browser)
398
+ watir_page_object.h1_element
399
+ end
400
+
401
+ it "should find all h1 elements" do
225
402
  watir_browser.should_receive(:h1s).with(:id => 'blah').and_return([watir_browser])
226
403
  elements = watir_page_object.h1_elements(:id => 'blah')
227
404
  elements[0].should be_instance_of PageObject::Elements::Heading
228
405
  end
229
406
 
407
+ it "should find all h1 elements using no parameters" do
408
+ watir_browser.should_receive(:h1s).with({}).and_return([watir_browser])
409
+ watir_page_object.h1_elements
410
+ end
411
+
230
412
  it "should find a h2 element" do
231
413
  watir_browser.should_receive(:h2).with(:id => 'blah').and_return(watir_browser)
232
414
  element = watir_page_object.h2_element(:id => 'blah')
233
415
  element.should be_instance_of PageObject::Elements::Heading
234
416
  end
235
417
 
418
+ it "should find a h2 element using default identifier" do
419
+ watir_browser.should_receive(:h2).with(:index => 0).and_return(watir_browser)
420
+ watir_page_object.h2_element
421
+ end
422
+
236
423
  it "should find all h2 elements" do
237
424
  watir_browser.should_receive(:h2s).with(:id => 'blah').and_return([watir_browser])
238
425
  elements = watir_page_object.h2_elements(:id => 'blah')
239
426
  elements[0].should be_instance_of PageObject::Elements::Heading
240
427
  end
241
428
 
429
+ it "should find all h2 elements using no identifier" do
430
+ watir_browser.should_receive(:h2s).with({}).and_return([watir_browser])
431
+ watir_page_object.h2_elements
432
+ end
433
+
242
434
  it "should find a h3 element" do
243
435
  watir_browser.should_receive(:h3).with(:id => 'blah').and_return(watir_browser)
244
436
  element = watir_page_object.h3_element(:id => 'blah')
245
437
  element.should be_instance_of PageObject::Elements::Heading
246
438
  end
247
439
 
440
+ it "should find a h3 element using a default identifier" do
441
+ watir_browser.should_receive(:h3).with(:index => 0).and_return(watir_browser)
442
+ watir_page_object.h3_element
443
+ end
444
+
248
445
  it "should find all h3 elements" do
249
446
  watir_browser.should_receive(:h3s).with(:id => 'blah').and_return([watir_browser])
250
447
  elements = watir_page_object.h3_elements(:id => 'blah')
251
448
  elements[0].should be_instance_of PageObject::Elements::Heading
252
449
  end
253
450
 
451
+ it "should find all h3 elements using no identifiers" do
452
+ watir_browser.should_receive(:h3s).with({}).and_return([watir_browser])
453
+ watir_page_object.h3_elements
454
+ end
455
+
254
456
  it "should find a h4 element" do
255
457
  watir_browser.should_receive(:h4).with(:id => 'blah').and_return(watir_browser)
256
458
  element = watir_page_object.h4_element(:id => 'blah')
257
459
  element.should be_instance_of PageObject::Elements::Heading
258
460
  end
259
461
 
462
+ it "should find a h4 element using a default identifier" do
463
+ watir_browser.should_receive(:h4).with(:index => 0).and_return(watir_browser)
464
+ watir_page_object.h4_element
465
+ end
466
+
260
467
  it "should find all h4 elements" do
261
468
  watir_browser.should_receive(:h4s).with(:id => 'blah').and_return([watir_browser])
262
469
  elements = watir_page_object.h4_elements(:id => 'blah')
263
470
  elements[0].should be_instance_of PageObject::Elements::Heading
264
471
  end
265
472
 
473
+ it "should find all h4 elements using no identifier" do
474
+ watir_browser.should_receive(:h4s).with({}).and_return([watir_browser])
475
+ watir_page_object.h4_elements
476
+ end
477
+
266
478
  it "should find a h5 element" do
267
479
  watir_browser.should_receive(:h5).with(:id => 'blah').and_return(watir_browser)
268
480
  element = watir_page_object.h5_element(:id => 'blah')
269
481
  element.should be_instance_of PageObject::Elements::Heading
270
482
  end
271
483
 
484
+ it "should find a h5 element using a default identifier" do
485
+ watir_browser.should_receive(:h5).with(:index => 0).and_return(watir_browser)
486
+ watir_page_object.h5_element
487
+ end
488
+
272
489
  it "should find all h5 elements" do
273
490
  watir_browser.should_receive(:h5s).with(:id => 'blah').and_return([watir_browser])
274
491
  elements = watir_page_object.h5_elements(:id => 'blah')
275
492
  elements[0].should be_instance_of PageObject::Elements::Heading
276
493
  end
277
494
 
495
+ it "should find all h5 elements using no identifier" do
496
+ watir_browser.should_receive(:h5s).with({}).and_return([watir_browser])
497
+ watir_page_object.h5_elements
498
+ end
499
+
278
500
  it "should find a h6 element" do
279
501
  watir_browser.should_receive(:h6).with(:id => 'blah').and_return(watir_browser)
280
502
  element = watir_page_object.h6_element(:id => 'blah')
281
503
  element.should be_instance_of PageObject::Elements::Heading
282
504
  end
283
505
 
506
+ it "should find a h6 element using a default identifier" do
507
+ watir_browser.should_receive(:h6).with(:index => 0).and_return(watir_browser)
508
+ watir_page_object.h6_element
509
+ end
510
+
284
511
  it "should find all h6 elements" do
285
512
  watir_browser.should_receive(:h6s).with(:id => 'blah').and_return([watir_browser])
286
513
  elements = watir_page_object.h6_elements(:id => 'blah')
287
514
  elements[0].should be_instance_of PageObject::Elements::Heading
288
515
  end
289
516
 
517
+ it "should find all h6 elements using no identifier" do
518
+ watir_browser.should_receive(:h6s).with({}).and_return([watir_browser])
519
+ watir_page_object.h6_elements
520
+ end
521
+
290
522
  it "should find a paragraph element" do
291
523
  watir_browser.should_receive(:p).with(:id => 'blah').and_return(watir_browser)
292
524
  element = watir_page_object.paragraph_element(:id => 'blah')
293
525
  element.should be_instance_of PageObject::Elements::Paragraph
294
526
  end
295
527
 
528
+ it "should find a paragraph element using a default identifier" do
529
+ watir_browser.should_receive(:p).with(:index => 0).and_return(watir_browser)
530
+ watir_page_object.paragraph_element
531
+ end
532
+
296
533
  it "should find all paragraph elements" do
297
534
  watir_browser.should_receive(:ps).with(:id => 'blah').and_return([watir_browser])
298
535
  elements = watir_page_object.paragraph_elements(:id => 'blah')
299
536
  elements[0].should be_instance_of PageObject::Elements::Paragraph
300
537
  end
301
538
 
539
+ it "should find all paragraph elements using no identifier" do
540
+ watir_browser.should_receive(:ps).with({}).and_return([watir_browser])
541
+ watir_page_object.paragraph_elements
542
+ end
543
+
302
544
  it "should find a label" do
303
545
  watir_browser.should_receive(:label).with(:id => 'blah').and_return(watir_browser)
304
546
  element = watir_page_object.label_element(:id => 'blah')
305
547
  element.should be_instance_of PageObject::Elements::Label
306
548
  end
307
549
 
550
+ it "should find a label element using default parameters" do
551
+ watir_browser.should_receive(:label).with(:index => 0).and_return(watir_browser)
552
+ watir_page_object.label_element
553
+ end
554
+
308
555
  it "should find all label elements" do
309
556
  watir_browser.should_receive(:labels).with(:id => 'blah').and_return([watir_browser])
310
557
  elements = watir_page_object.label_elements(:id => 'blah')
311
558
  elements[0].should be_instance_of PageObject::Elements::Label
312
- end
559
+ end
560
+
561
+ it "should find all label elements using no parameters" do
562
+ watir_browser.should_receive(:labels).with({}).and_return([watir_browser])
563
+ watir_page_object.label_elements
564
+ end
313
565
 
314
566
  it "should find a file field element" do
315
567
  watir_browser.should_receive(:file_field).with(:id => 'blah').and_return(watir_browser)
316
568
  element = watir_page_object.file_field_element(:id => 'blah')
317
569
  element.should be_instance_of PageObject::Elements::FileField
318
570
  end
571
+
572
+ it "should find a file field element using a default identifier" do
573
+ watir_browser.should_receive(:file_field).with(:index => 0).and_return(watir_browser)
574
+ watir_page_object.file_field_element
575
+ end
576
+
577
+ it "should find all file field elements" do
578
+ watir_browser.should_receive(:file_fields).with(:id => 'blah').and_return([watir_browser])
579
+ element = watir_page_object.file_field_elements(:id => 'blah')
580
+ element[0].should be_instance_of PageObject::Elements::FileField
581
+ end
582
+
583
+ it "should find all file fields using no identifier" do
584
+ watir_browser.should_receive(:file_fields).with({}).and_return([watir_browser])
585
+ watir_page_object.file_field_elements
586
+ end
587
+
588
+ it "should find an element" do
589
+ watir_browser.should_receive(:audio).with(:id => 'blah').and_return(watir_browser)
590
+ element = watir_page_object.element(:audio, :id => 'blah')
591
+ element.should be_instance_of PageObject::Elements::Element
592
+ end
593
+
594
+ it "should find an element using a default identifier" do
595
+ watir_browser.should_receive(:audio).with(:index => 0).and_return(watir_browser)
596
+ watir_page_object.element(:audio)
597
+ end
319
598
  end
320
599
 
321
600
  context "when using Selenium" do