page-object 0.5.5 → 0.6

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.
@@ -170,10 +170,7 @@ module PageObject
170
170
  # See PageObject::Accessors#text_field
171
171
  #
172
172
  def text_field_value_for(identifier)
173
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::TextField)
174
- value = @browser.instance_eval "#{nested_frames(frame_identifiers)}text_field(identifier).value"
175
- switch_to_default_content(frame_identifiers)
176
- value
173
+ process_watir_call("text_field(identifier).value", Elements::TextField, identifier)
177
174
  end
178
175
 
179
176
  #
@@ -181,9 +178,7 @@ module PageObject
181
178
  # See PageObject::Accessors#text_field
182
179
  #
183
180
  def text_field_value_set(identifier, value)
184
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::TextField)
185
- @browser.instance_eval "#{nested_frames(frame_identifiers)}text_field(identifier).set(value)"
186
- switch_to_default_content(frame_identifiers)
181
+ process_watir_call("text_field(identifier).set(value)", Elements::TextField, identifier, value)
187
182
  end
188
183
 
189
184
  #
@@ -191,10 +186,14 @@ module PageObject
191
186
  # See PageObject::Accessors#text_field
192
187
  #
193
188
  def text_field_for(identifier)
194
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::TextField)
195
- element = @browser.instance_eval "#{nested_frames(frame_identifiers)}text_field(identifier)"
196
- switch_to_default_content(frame_identifiers)
197
- Elements::TextField.new(element, :platform => :watir_webdriver)
189
+ find_watir_element("text_field(identifier)", Elements::TextField, identifier)
190
+ end
191
+
192
+ #
193
+ # platform method to retrieve an array of text field elements
194
+ #
195
+ def text_fields_for(identifier)
196
+ find_watir_elements("text_fields(identifier)", Elements::TextField, identifier)
198
197
  end
199
198
 
200
199
  #
@@ -202,10 +201,7 @@ module PageObject
202
201
  # See PageObject::Accessors#hidden_field
203
202
  #
204
203
  def hidden_field_value_for(identifier)
205
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::HiddenField)
206
- value = @browser.instance_eval "#{nested_frames(frame_identifiers)}hidden(identifier).value"
207
- switch_to_default_content(frame_identifiers)
208
- value
204
+ process_watir_call("hidden(identifier).value", Elements::HiddenField, identifier)
209
205
  end
210
206
 
211
207
  #
@@ -213,10 +209,14 @@ module PageObject
213
209
  # See PageObject::Accessors#hidden_field
214
210
  #
215
211
  def hidden_field_for(identifier)
216
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::HiddenField)
217
- element = @browser.instance_eval "#{nested_frames(frame_identifiers)}hidden(identifier)"
218
- switch_to_default_content(frame_identifiers)
219
- Elements::HiddenField.new(element, :platform => :watir_webdriver)
212
+ find_watir_element("hidden(identifier)", Elements::HiddenField, identifier)
213
+ end
214
+
215
+ #
216
+ # platform method to retrieve an array of hidden field elements
217
+ #
218
+ def hidden_fields_for(identifier)
219
+ find_watir_elements("hiddens(identifier)", Elements::HiddenField, identifier)
220
220
  end
221
221
 
222
222
  #
@@ -224,9 +224,8 @@ module PageObject
224
224
  # See PageObject::Accessors#text_area
225
225
  #
226
226
  def text_area_value_set(identifier, value)
227
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::TextArea)
228
- @browser.instance_eval "#{nested_frames(frame_identifiers)}textarea(identifier).send_keys(value)"
229
- switch_to_default_content(frame_identifiers)
227
+ process_watir_call("textarea(identifier).send_keys(value)", Elements::TextArea,
228
+ identifier, value)
230
229
  end
231
230
 
232
231
  #
@@ -234,10 +233,7 @@ module PageObject
234
233
  # See PageObject::Accessors#text_area
235
234
  #
236
235
  def text_area_value_for(identifier)
237
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::TextArea)
238
- value = @browser.instance_eval "#{nested_frames(frame_identifiers)}textarea(identifier).value"
239
- switch_to_default_content(frame_identifiers)
240
- value
236
+ process_watir_call("textarea(identifier).value", Elements::TextArea, identifier)
241
237
  end
242
238
 
243
239
  #
@@ -245,10 +241,14 @@ module PageObject
245
241
  # See PageObject::Accessors#text_area
246
242
  #
247
243
  def text_area_for(identifier)
248
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::TextArea)
249
- element = @browser.instance_eval "#{nested_frames(frame_identifiers)}textarea(identifier)"
250
- switch_to_default_content(frame_identifiers)
251
- Elements::TextArea.new(element, :platform => :watir_webdriver)
244
+ find_watir_element("textarea(identifier)", Elements::TextArea, identifier)
245
+ end
246
+
247
+ #
248
+ # platform method to retrieve an array of textarea elements
249
+ #
250
+ def text_areas_for(identifier)
251
+ find_watir_elements("textareas(identifier)", Elements::TextArea, identifier)
252
252
  end
253
253
 
254
254
  #
@@ -256,10 +256,8 @@ module PageObject
256
256
  # See PageObject::Accessors#select_list
257
257
  #
258
258
  def select_list_value_for(identifier)
259
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::SelectList)
260
- value = @browser.instance_eval "#{nested_frames(frame_identifiers)}select_list(identifier).value"
261
- switch_to_default_content(frame_identifiers)
262
- value
259
+ process_watir_call("select_list(identifier).value", Elements::SelectList,
260
+ identifier)
263
261
  end
264
262
 
265
263
  #
@@ -267,9 +265,8 @@ module PageObject
267
265
  # See PageObject::Accessors#select_list
268
266
  #
269
267
  def select_list_value_set(identifier, value)
270
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::SelectList)
271
- @browser.instance_eval "#{nested_frames(frame_identifiers)}select_list(identifier).select(value)"
272
- switch_to_default_content(frame_identifiers)
268
+ process_watir_call("select_list(identifier).select(value)", Elements::SelectList,
269
+ identifier, value)
273
270
  end
274
271
 
275
272
  #
@@ -277,10 +274,14 @@ module PageObject
277
274
  # See PageObject::Accessors#select_list
278
275
  #
279
276
  def select_list_for(identifier)
280
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::SelectList)
281
- element = @browser.instance_eval "#{nested_frames(frame_identifiers)}select_list(identifier)"
282
- switch_to_default_content(frame_identifiers)
283
- Elements::SelectList.new(element, :platform => :watir_webdriver)
277
+ find_watir_element("select_list(identifier)", Elements::SelectList, identifier)
278
+ end
279
+
280
+ #
281
+ # platform method to retrieve an array of select_list elements
282
+ #
283
+ def select_lists_for(identifier)
284
+ find_watir_elements("select_lists(identifier)", Elements::SelectList, identifier)
284
285
  end
285
286
 
286
287
  #
@@ -288,9 +289,8 @@ module PageObject
288
289
  # See PageObject::Accessors#link
289
290
  #
290
291
  def click_link_for(identifier)
291
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Link)
292
- @browser.instance_eval "#{nested_frames(frame_identifiers)}link(identifier).click if identifier"
293
- switch_to_default_content(frame_identifiers)
292
+ process_watir_call("link(identifier).click if identifier", Elements::Link,
293
+ identifier)
294
294
  end
295
295
 
296
296
  #
@@ -298,10 +298,14 @@ module PageObject
298
298
  # see PageObject::Accessors#link
299
299
  #
300
300
  def link_for(identifier)
301
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Link)
302
- element = @browser.instance_eval "#{nested_frames(frame_identifiers)}link(identifier)"
303
- switch_to_default_content(frame_identifiers)
304
- Elements::Link.new(element, :platform => :watir_webdriver)
301
+ find_watir_element("link(identifier)", Elements::Link, identifier)
302
+ end
303
+
304
+ #
305
+ # platform method to retrieve an array of link elements
306
+ #
307
+ def links_for(identifier)
308
+ find_watir_elements("links(identifier)", Elements::Link, identifier)
305
309
  end
306
310
 
307
311
  #
@@ -309,9 +313,7 @@ module PageObject
309
313
  # See PageObject::Accessors#checkbox
310
314
  #
311
315
  def check_checkbox(identifier)
312
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::CheckBox)
313
- @browser.instance_eval "#{nested_frames(frame_identifiers)}checkbox(identifier).set"
314
- switch_to_default_content(frame_identifiers)
316
+ process_watir_call("checkbox(identifier).set", Elements::CheckBox, identifier)
315
317
  end
316
318
 
317
319
  #
@@ -319,9 +321,7 @@ module PageObject
319
321
  # See PageObject::Accessors#checkbox
320
322
  #
321
323
  def uncheck_checkbox(identifier)
322
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::CheckBox)
323
- @browser.instance_eval "#{nested_frames(frame_identifiers)}checkbox(identifier).clear"
324
- switch_to_default_content(frame_identifiers)
324
+ process_watir_call("checkbox(identifier).clear", Elements::CheckBox, identifier)
325
325
  end
326
326
 
327
327
  #
@@ -329,10 +329,7 @@ module PageObject
329
329
  # See PageObject::Accessors#checkbox
330
330
  #
331
331
  def checkbox_checked?(identifier)
332
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::CheckBox)
333
- result = @browser.instance_eval "#{nested_frames(frame_identifiers)}checkbox(identifier).set?"
334
- switch_to_default_content(frame_identifiers)
335
- result
332
+ process_watir_call("checkbox(identifier).set?", Elements::CheckBox, identifier)
336
333
  end
337
334
 
338
335
  #
@@ -340,10 +337,14 @@ module PageObject
340
337
  # See PageObject::Accessors#checkbox
341
338
  #
342
339
  def checkbox_for(identifier)
343
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::CheckBox)
344
- element = @browser.instance_eval "#{nested_frames(frame_identifiers)}checkbox(identifier)"
345
- switch_to_default_content(frame_identifiers)
346
- Elements::CheckBox.new(element, :platform => :watir_webdriver)
340
+ find_watir_element("checkbox(identifier)", Elements::CheckBox, identifier)
341
+ end
342
+
343
+ #
344
+ # platform method to retrieve an array of checkbox elements
345
+ #
346
+ def checkboxes_for(identifier)
347
+ find_watir_elements("checkboxes(identifier)", Elements::CheckBox, identifier)
347
348
  end
348
349
 
349
350
  #
@@ -351,9 +352,7 @@ module PageObject
351
352
  # See PageObject::Accessors#radio_button
352
353
  #
353
354
  def select_radio(identifier)
354
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::RadioButton)
355
- @browser.instance_eval "#{nested_frames(frame_identifiers)}radio(identifier).set"
356
- switch_to_default_content(frame_identifiers)
355
+ process_watir_call("radio(identifier).set", Elements::RadioButton, identifier)
357
356
  end
358
357
 
359
358
  #
@@ -361,9 +360,7 @@ module PageObject
361
360
  # See PageObject::Accessors#radio_button
362
361
  #
363
362
  def clear_radio(identifier)
364
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::RadioButton)
365
- @browser.instance_eval "#{nested_frames(frame_identifiers)}radio(identifier).clear"
366
- switch_to_default_content(frame_identifiers)
363
+ process_watir_call("radio(identifier).clear", Elements::RadioButton, identifier)
367
364
  end
368
365
 
369
366
  #
@@ -371,10 +368,7 @@ module PageObject
371
368
  # See PageObject::Accessors#radio_button
372
369
  #
373
370
  def radio_selected?(identifier)
374
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::RadioButton)
375
- result = @browser.instance_eval "#{nested_frames(frame_identifiers)}radio(identifier).set?"
376
- switch_to_default_content(frame_identifiers)
377
- result
371
+ process_watir_call("radio(identifier).set?", Elements::RadioButton, identifier)
378
372
  end
379
373
 
380
374
  #
@@ -382,10 +376,14 @@ module PageObject
382
376
  # See PageObject::Accessors#radio_button
383
377
  #
384
378
  def radio_button_for(identifier)
385
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::RadioButton)
386
- element = @browser.instance_eval "#{nested_frames(frame_identifiers)}radio(identifier)"
387
- switch_to_default_content(frame_identifiers)
388
- ::PageObject::Elements::RadioButton.new(element, :platform => :watir_webdriver)
379
+ find_watir_element("radio(identifier)", Elements::RadioButton, identifier)
380
+ end
381
+
382
+ #
383
+ # platform method to retrieve an array of radio button elements
384
+ #
385
+ def radio_buttons_for(identifier)
386
+ find_watir_elements("radios(identifier)", Elements::RadioButton, identifier)
389
387
  end
390
388
 
391
389
  #
@@ -393,10 +391,7 @@ module PageObject
393
391
  # See PageObject::Accessors#div
394
392
  #
395
393
  def div_text_for(identifier)
396
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Div, 'div')
397
- text = @browser.instance_eval "#{nested_frames(frame_identifiers)}div(identifier).text"
398
- switch_to_default_content(frame_identifiers)
399
- text
394
+ process_watir_call("div(identifier).text", Elements::Div, identifier, nil, 'div')
400
395
  end
401
396
 
402
397
  #
@@ -404,10 +399,14 @@ module PageObject
404
399
  # See PageObject::Accessors#div
405
400
  #
406
401
  def div_for(identifier)
407
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Div, 'div')
408
- element = @browser.instance_eval "#{nested_frames(frame_identifiers)}div(identifier)"
409
- switch_to_default_content(frame_identifiers)
410
- ::PageObject::Elements::Div.new(element, :platform => :watir_webdriver)
402
+ find_watir_element("div(identifier)", Elements::Div, identifier, 'div')
403
+ end
404
+
405
+ #
406
+ # platform method to retrieve an array of div elements
407
+ #
408
+ def divs_for(identifier)
409
+ find_watir_elements("divs(identifier)", Elements::Div, identifier, 'div')
411
410
  end
412
411
 
413
412
  #
@@ -415,10 +414,7 @@ module PageObject
415
414
  # See PageObject::Accessors#span
416
415
  #
417
416
  def span_text_for(identifier)
418
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Span, 'span')
419
- text = @browser.instance_eval "#{nested_frames(frame_identifiers)}span(identifier).text"
420
- switch_to_default_content(frame_identifiers)
421
- text
417
+ process_watir_call("span(identifier).text", Elements::Span, identifier, nil, 'span')
422
418
  end
423
419
 
424
420
  #
@@ -426,10 +422,14 @@ module PageObject
426
422
  # See PageObject::Accessors#span
427
423
  #
428
424
  def span_for(identifier)
429
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Span, 'span')
430
- element = @browser.instance_eval "#{nested_frames(frame_identifiers)}span(identifier)"
431
- switch_to_default_content(frame_identifiers)
432
- ::PageObject::Elements::Span.new(element, :platform => :watir_webdriver)
425
+ find_watir_element("span(identifier)", Elements::Span, identifier, 'span')
426
+ end
427
+
428
+ #
429
+ # platform method to retrieve an array of span elements
430
+ #
431
+ def spans_for(identifier)
432
+ find_watir_elements("spans(identifier)", Elements::Span, identifier, 'span')
433
433
  end
434
434
 
435
435
  #
@@ -437,9 +437,7 @@ module PageObject
437
437
  # See PageObject::Accessors#button
438
438
  #
439
439
  def click_button_for(identifier)
440
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Button)
441
- @browser.instance_eval "#{nested_frames(frame_identifiers)}button(identifier).click"
442
- switch_to_default_content(frame_identifiers)
440
+ process_watir_call("button(identifier).click", Elements::Button, identifier)
443
441
  end
444
442
 
445
443
  #
@@ -447,10 +445,14 @@ module PageObject
447
445
  # See PageObject::Accessors#button
448
446
  #
449
447
  def button_for(identifier)
450
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Button)
451
- element = @browser.instance_eval "#{nested_frames(frame_identifiers)}button(identifier)"
452
- switch_to_default_content(frame_identifiers)
453
- ::PageObject::Elements::Button.new(element, :platform => :watir_webdriver)
448
+ find_watir_element("button(identifier)", Elements::Button, identifier)
449
+ end
450
+
451
+ #
452
+ # platform method to retrieve an array of button elements
453
+ #
454
+ def buttons_for(identifier)
455
+ find_watir_elements("buttons(identifier)", Elements::Button, identifier)
454
456
  end
455
457
 
456
458
  #
@@ -458,10 +460,14 @@ module PageObject
458
460
  # See PageObject::Accessors#table
459
461
  #
460
462
  def table_for(identifier)
461
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Table, 'table')
462
- element = @browser.instance_eval "#{nested_frames(frame_identifiers)}table(identifier)"
463
- switch_to_default_content(frame_identifiers)
464
- ::PageObject::Elements::Table.new(element, :platform => :watir_webdriver)
463
+ find_watir_element("table(identifier)", Elements::Table, identifier, 'table')
464
+ end
465
+
466
+ #
467
+ # platform method to retrieve an array of table elements
468
+ #
469
+ def tables_for(identifier)
470
+ find_watir_elements("tables(identifier)", Elements::Table, identifier, 'table')
465
471
  end
466
472
 
467
473
  #
@@ -469,10 +475,8 @@ module PageObject
469
475
  # See PageObject::Accessors#cell
470
476
  #
471
477
  def cell_text_for(identifier)
472
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::TableCell, 'td')
473
- text = @browser.instance_eval "#{nested_frames(frame_identifiers)}td(identifier).text"
474
- switch_to_default_content(frame_identifiers)
475
- text
478
+ process_watir_call("td(identifier).text", Elements::TableCell, identifier,
479
+ nil, 'td')
476
480
  end
477
481
 
478
482
  #
@@ -480,10 +484,14 @@ module PageObject
480
484
  # See PageObject::Accessors#cell
481
485
  #
482
486
  def cell_for(identifier)
483
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::TableCell, 'td')
484
- element = @browser.instance_eval "#{nested_frames(frame_identifiers)}td(identifier)"
485
- switch_to_default_content(frame_identifiers)
486
- ::PageObject::Elements::TableCell.new(element, :platform => :watir_webdriver)
487
+ find_watir_element("td(identifier)", Elements::TableCell, identifier, 'td')
488
+ end
489
+
490
+ #
491
+ # platform method to retrieve an array of table cell elements
492
+ #
493
+ def cells_for(identifier)
494
+ find_watir_elements("tds(identifier)", Elements::TableCell, identifier, 'td')
487
495
  end
488
496
 
489
497
  #
@@ -491,10 +499,14 @@ module PageObject
491
499
  # See PageObject::Accessors#image
492
500
  #
493
501
  def image_for(identifier)
494
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Image)
495
- element = @browser.instance_eval "#{nested_frames(frame_identifiers)}image(identifier)"
496
- switch_to_default_content(frame_identifiers)
497
- ::PageObject::Elements::Image.new(element, :platform => :watir_webdriver)
502
+ find_watir_element("image(identifier)", Elements::Image, identifier)
503
+ end
504
+
505
+ #
506
+ # platform method to retrieve an array of image elements
507
+ #
508
+ def images_for(identifier)
509
+ find_watir_elements("images(identifier)", Elements::Image, identifier)
498
510
  end
499
511
 
500
512
  #
@@ -502,10 +514,14 @@ module PageObject
502
514
  # See PageObject::Accessors#form
503
515
  #
504
516
  def form_for(identifier)
505
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Form)
506
- element = @browser.instance_eval "#{nested_frames(frame_identifiers)}form(identifier)"
507
- switch_to_default_content(frame_identifiers)
508
- ::PageObject::Elements::Form.new(element, :platform => :watir_webdriver)
517
+ find_watir_element("form(identifier)", Elements::Form, identifier)
518
+ end
519
+
520
+ #
521
+ # platform method to retrieve an array of forms
522
+ #
523
+ def forms_for(identifier)
524
+ find_watir_elements("forms(identifier)", Elements::Form, identifier)
509
525
  end
510
526
 
511
527
  #
@@ -513,10 +529,7 @@ module PageObject
513
529
  # See PageObject::Accessors#list_item
514
530
  #
515
531
  def list_item_text_for(identifier)
516
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::ListItem, 'li')
517
- text = @browser.instance_eval "#{nested_frames(frame_identifiers)}li(identifier).text"
518
- switch_to_default_content(frame_identifiers)
519
- text
532
+ process_watir_call("li(identifier).text", Elements::ListItem, identifier, nil, 'li')
520
533
  end
521
534
 
522
535
  #
@@ -524,10 +537,14 @@ module PageObject
524
537
  # See PageObject::Accessors#list_item
525
538
  #
526
539
  def list_item_for(identifier)
527
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::ListItem, 'li')
528
- element = @browser.instance_eval "#{nested_frames(frame_identifiers)}li(identifier)"
529
- switch_to_default_content(frame_identifiers)
530
- ::PageObject::Elements::ListItem.new(element, :platform => :watir_webdriver)
540
+ find_watir_element("li(identifier)", Elements::ListItem, identifier, 'li')
541
+ end
542
+
543
+ #
544
+ # platform method to retrieve an array of list items
545
+ #
546
+ def list_items_for(identifier)
547
+ find_watir_elements("lis(identifier)", Elements::ListItem, identifier, 'li')
531
548
  end
532
549
 
533
550
  #
@@ -535,10 +552,14 @@ module PageObject
535
552
  # See PageObject::Accessors#unordered_list
536
553
  #
537
554
  def unordered_list_for(identifier)
538
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::UnorderedList, 'ul')
539
- element = @browser.instance_eval "#{nested_frames(frame_identifiers)}ul(identifier)"
540
- switch_to_default_content(frame_identifiers)
541
- ::PageObject::Elements::UnorderedList.new(element, :platform => :watir_webdriver)
555
+ find_watir_element("ul(identifier)", Elements::UnorderedList, identifier, 'ul')
556
+ end
557
+
558
+ #
559
+ # platform method to retrieve an array of unordered lists
560
+ #
561
+ def unordered_lists_for(identifier)
562
+ find_watir_elements("uls(identifier)", Elements::UnorderedList, identifier, 'ul')
542
563
  end
543
564
 
544
565
  #
@@ -546,21 +567,22 @@ module PageObject
546
567
  # See PageObject::Accessors#ordered_list
547
568
  #
548
569
  def ordered_list_for(identifier)
549
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::OrderedList, 'ol')
550
- element = @browser.instance_eval "#{nested_frames(frame_identifiers)}ol(identifier)"
551
- switch_to_default_content(frame_identifiers)
552
- ::PageObject::Elements::OrderedList.new(element, :platform => :watir_webdriver)
570
+ find_watir_element("ol(identifier)", Elements::OrderedList, identifier, 'ol')
553
571
  end
554
572
 
573
+ #
574
+ # platform method to retrieve an array of ordered lists
575
+ #
576
+ def ordered_lists_for(identifier)
577
+ find_watir_elements("ols(identifier)", Elements::OrderedList, identifier, 'ol')
578
+ end
579
+
555
580
  #
556
581
  # platform method to retrieve the text for a h1
557
582
  # See PageObject::Accessors#h1
558
583
  #
559
584
  def h1_text_for(identifier)
560
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Heading, 'h1')
561
- text = @browser.instance_eval "#{nested_frames(frame_identifiers)}h1(identifier).text"
562
- switch_to_default_content(frame_identifiers)
563
- text
585
+ process_watir_call("h1(identifier).text", Elements::Heading, identifier, nil, 'h1')
564
586
  end
565
587
 
566
588
  #
@@ -568,21 +590,22 @@ module PageObject
568
590
  # See PageObject::Accessors#h1
569
591
  #
570
592
  def h1_for(identifier)
571
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Heading, 'h1')
572
- element = @browser.instance_eval "#{nested_frames(frame_identifiers)}h1(identifier)"
573
- switch_to_default_content(frame_identifiers)
574
- ::PageObject::Elements::Heading.new(element, :platform => :watir_webdriver)
593
+ find_watir_element("h1(identifier)", Elements::Heading, identifier, 'h1')
575
594
  end
576
595
 
596
+ #
597
+ # platform method to retrieve an array of h1s
598
+ #
599
+ def h1s_for(identifier)
600
+ find_watir_elements("h1s(identifier)", Elements::Heading, identifier, 'h1')
601
+ end
602
+
577
603
  #
578
604
  # platform method to retrieve the text for a h2
579
605
  # See PageObject::Accessors#h2
580
606
  #
581
607
  def h2_text_for(identifier)
582
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Heading, 'h2')
583
- text = @browser.instance_eval "#{nested_frames(frame_identifiers)}h2(identifier).text"
584
- switch_to_default_content(frame_identifiers)
585
- text
608
+ process_watir_call("h2(identifier).text", Elements::Heading, identifier, nil, 'h2')
586
609
  end
587
610
 
588
611
  #
@@ -590,21 +613,22 @@ module PageObject
590
613
  # See PageObject::Accessors#h2
591
614
  #
592
615
  def h2_for(identifier)
593
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Heading, 'h2')
594
- element = @browser.instance_eval "#{nested_frames(frame_identifiers)}h2(identifier)"
595
- switch_to_default_content(frame_identifiers)
596
- ::PageObject::Elements::Heading.new(element, :platform => :watir_webdriver)
616
+ find_watir_element("h2(identifier)", Elements::Heading, identifier, 'h2')
597
617
  end
598
618
 
619
+ #
620
+ # platform method to retrieve an array of h2s
621
+ #
622
+ def h2s_for(identifier)
623
+ find_watir_elements("h2s(identifier)", Elements::Heading, identifier, 'h2')
624
+ end
625
+
599
626
  #
600
627
  # platform method to retrieve the text for a h3
601
628
  # See PageObject::Accessors#h3
602
629
  #
603
630
  def h3_text_for(identifier)
604
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Heading, 'h3')
605
- text = @browser.instance_eval "#{nested_frames(frame_identifiers)}h3(identifier).text"
606
- switch_to_default_content(frame_identifiers)
607
- text
631
+ process_watir_call("h3(identifier).text", Elements::Heading, identifier, nil, 'h3')
608
632
  end
609
633
 
610
634
  #
@@ -612,21 +636,22 @@ module PageObject
612
636
  # See PageObject::Accessors#h3
613
637
  #
614
638
  def h3_for(identifier)
615
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Heading, 'h3')
616
- element = @browser.instance_eval "#{nested_frames(frame_identifiers)}h3(identifier)"
617
- switch_to_default_content(frame_identifiers)
618
- ::PageObject::Elements::Heading.new(element, :platform => :watir_webdriver)
639
+ find_watir_element("h3(identifier)", Elements::Heading, identifier, 'h3')
619
640
  end
620
641
 
642
+ #
643
+ # platform method to retrieve an array of h3s
644
+ #
645
+ def h3s_for(identifier)
646
+ find_watir_elements("h3s(identifier)", Elements::Heading, identifier, 'h3')
647
+ end
648
+
621
649
  #
622
650
  # platform method to retrieve the text for a h4
623
651
  # See PageObject::Accessors#h4
624
652
  #
625
653
  def h4_text_for(identifier)
626
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Heading, 'h4')
627
- text = @browser.instance_eval "#{nested_frames(frame_identifiers)}h4(identifier).text"
628
- switch_to_default_content(frame_identifiers)
629
- text
654
+ process_watir_call("h4(identifier).text", Elements::Heading, identifier, nil, 'h4')
630
655
  end
631
656
 
632
657
  #
@@ -634,21 +659,22 @@ module PageObject
634
659
  # See PageObject::Accessors#h4
635
660
  #
636
661
  def h4_for(identifier)
637
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Heading, 'h4')
638
- element = @browser.instance_eval "#{nested_frames(frame_identifiers)}h4(identifier)"
639
- switch_to_default_content(frame_identifiers)
640
- ::PageObject::Elements::Heading.new(element, :platform => :watir_webdriver)
662
+ find_watir_element("h4(identifier)", Elements::Heading, identifier, 'h4')
641
663
  end
642
664
 
665
+ #
666
+ # platform method to retrieve an array of h4s
667
+ #
668
+ def h4s_for(identifier)
669
+ find_watir_elements("h4s(identifier)", Elements::Heading, identifier, 'h4')
670
+ end
671
+
643
672
  #
644
673
  # platform method to retrieve the text for a h5
645
674
  # See PageObject::Accessors#h5
646
675
  #
647
676
  def h5_text_for(identifier)
648
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Heading, 'h5')
649
- text = @browser.instance_eval "#{nested_frames(frame_identifiers)}h5(identifier).text"
650
- switch_to_default_content(frame_identifiers)
651
- text
677
+ process_watir_call("h5(identifier).text", Elements::Heading, identifier, nil, 'h5')
652
678
  end
653
679
 
654
680
  #
@@ -656,21 +682,22 @@ module PageObject
656
682
  # See PageObject::Accessors#h5
657
683
  #
658
684
  def h5_for(identifier)
659
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Heading, 'h5')
660
- element = @browser.instance_eval "#{nested_frames(frame_identifiers)}h5(identifier)"
661
- switch_to_default_content(frame_identifiers)
662
- ::PageObject::Elements::Heading.new(element, :platform => :watir_webdriver)
685
+ find_watir_element("h5(identifier)", Elements::Heading, identifier, 'h5')
663
686
  end
664
687
 
688
+ #
689
+ # platform method to retrieve an array of h5s
690
+ #
691
+ def h5s_for(identifier)
692
+ find_watir_elements("h5s(identifier)", Elements::Heading, identifier, 'h5')
693
+ end
694
+
665
695
  #
666
696
  # platform method to retrieve the text for a h6
667
697
  # See PageObject::Accessors#h6
668
698
  #
669
699
  def h6_text_for(identifier)
670
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Heading, 'h6')
671
- text = @browser.instance_eval "#{nested_frames(frame_identifiers)}h6(identifier).text"
672
- switch_to_default_content(frame_identifiers)
673
- text
700
+ process_watir_call("h6(identifier).text", Elements::Heading, identifier, nil, 'h6')
674
701
  end
675
702
 
676
703
  #
@@ -678,21 +705,22 @@ module PageObject
678
705
  # See PageObject::Accessors#h6
679
706
  #
680
707
  def h6_for(identifier)
681
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Heading, 'h6')
682
- element = @browser.instance_eval "#{nested_frames(frame_identifiers)}h6(identifier)"
683
- switch_to_default_content(frame_identifiers)
684
- ::PageObject::Elements::Heading.new(element, :platform => :watir_webdriver)
708
+ find_watir_element("h6(identifier)", Elements::Heading, identifier, 'h6')
685
709
  end
686
710
 
711
+ #
712
+ # platform method to retrieve an array of h6s
713
+ #
714
+ def h6s_for(identifier)
715
+ find_watir_elements("h6s(identifier)", Elements::Heading, identifier, 'h6')
716
+ end
717
+
687
718
  #
688
719
  # platform method to retrieve the text for a paragraph
689
720
  # See PageObject::Accessors#paragraph
690
721
  #
691
722
  def paragraph_text_for(identifier)
692
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Heading, 'p')
693
- text = @browser.instance_eval "#{nested_frames(frame_identifiers)}p(identifier).text"
694
- switch_to_default_content(frame_identifiers)
695
- text
723
+ process_watir_call("p(identifier).text", Elements::Paragraph, identifier, nil, 'p')
696
724
  end
697
725
 
698
726
  #
@@ -700,10 +728,14 @@ module PageObject
700
728
  # See PageObject::Accessors#paragraph
701
729
  #
702
730
  def paragraph_for(identifier)
703
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Heading, 'p')
704
- element = @browser.instance_eval "#{nested_frames(frame_identifiers)}p(identifier)"
705
- switch_to_default_content(frame_identifiers)
706
- ::PageObject::Elements::Paragraph.new(element, :platform => :watir_webdriver)
731
+ find_watir_element("p(identifier)", Elements::Paragraph, identifier, 'p')
732
+ end
733
+
734
+ #
735
+ # platform method to retrieve an array of paragraph elements
736
+ #
737
+ def paragraphs_for(identifier)
738
+ find_watir_elements("ps(identifier)", Elements::Paragraph, identifier, 'p')
707
739
  end
708
740
 
709
741
  #
@@ -711,9 +743,8 @@ module PageObject
711
743
  # See PageObject::Accessors#file_field
712
744
  #
713
745
  def file_field_value_set(identifier, value)
714
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::FileField)
715
- @browser.instance_eval "#{nested_frames(frame_identifiers)}file_field(identifier).set(value)"
716
- switch_to_default_content(frame_identifiers)
746
+ process_watir_call("file_field(identifier).set(value)", Elements::FileField,
747
+ identifier, value)
717
748
  end
718
749
 
719
750
  #
@@ -721,14 +752,32 @@ module PageObject
721
752
  # See PageObject::Accessors#file_field
722
753
  #
723
754
  def file_field_for(identifier)
724
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::FileField)
725
- element = @browser.instance_eval "#{nested_frames(frame_identifiers)}file_field(identifier)"
726
- switch_to_default_content(frame_identifiers)
727
- ::PageObject::Elements::FileField.new(element, :platform => :watir_webdriver)
755
+ find_watir_element("file_field(identifier)", Elements::FileField, identifier)
728
756
  end
729
757
 
730
758
  private
731
759
 
760
+ def find_watir_elements(the_call, type, identifier, tag_name=nil)
761
+ identifier, frame_identifiers = parse_identifiers(identifier, type, tag_name)
762
+ elements = @browser.instance_eval "#{nested_frames(frame_identifiers)}#{the_call}"
763
+ switch_to_default_content(frame_identifiers)
764
+ elements.map { |element| type.new(element, :platform => :watir_webdriver) }
765
+ end
766
+
767
+ def find_watir_element(the_call, type, identifier, tag_name=nil)
768
+ identifier, frame_identifiers = parse_identifiers(identifier, type, tag_name)
769
+ element = @browser.instance_eval "#{nested_frames(frame_identifiers)}#{the_call}"
770
+ switch_to_default_content(frame_identifiers)
771
+ type.new(element, :platform => :watir_webdriver)
772
+ end
773
+
774
+ def process_watir_call(the_call, type, identifier, value=nil, tag_name=nil)
775
+ identifier, frame_identifiers = parse_identifiers(identifier, type, tag_name)
776
+ value = @browser.instance_eval "#{nested_frames(frame_identifiers)}#{the_call}"
777
+ switch_to_default_content(frame_identifiers)
778
+ value
779
+ end
780
+
732
781
  def parse_identifiers(identifier, element, tag_name=nil)
733
782
  frame_identifiers = identifier.delete(:frame)
734
783
  identifier = add_tagname_if_needed identifier, tag_name if tag_name