page-object 0.5.5 → 0.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -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