page-object 0.8.1 → 0.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. data/ChangeLog +39 -0
  2. data/Gemfile +1 -0
  3. data/Rakefile +2 -2
  4. data/cucumber.yml +4 -4
  5. data/features/element.feature +5 -0
  6. data/features/{sample-app/public → html}/04-Death_Becomes_Fur.mp4 +0 -0
  7. data/features/{sample-app/public → html}/04-Death_Becomes_Fur.oga +0 -0
  8. data/features/{sample-app/public → html}/movie.mp4 +0 -0
  9. data/features/{sample-app/public → html}/movie.ogg +0 -0
  10. data/features/html/static_elements.html +7 -7
  11. data/features/sample-app/sample_app.rb +1 -1
  12. data/features/step_definitions/element_steps.rb +7 -0
  13. data/features/step_definitions/image_steps.rb +1 -1
  14. data/features/step_definitions/javascript_steps.rb +8 -2
  15. data/features/support/persistent_browser.rb +56 -3
  16. data/features/support/targets/firefox14_osx.rb +6 -0
  17. data/features/support/targets/firefox14_windows7.rb +6 -0
  18. data/features/support/url_helper.rb +3 -1
  19. data/lib/page-object/accessors.rb +131 -1003
  20. data/lib/page-object/element_locators.rb +9 -1008
  21. data/lib/page-object/locator_generator.rb +77 -0
  22. data/lib/page-object/nested_elements.rb +7 -230
  23. data/lib/page-object/page_factory.rb +10 -6
  24. data/lib/page-object/platforms/selenium_webdriver/element.rb +7 -0
  25. data/lib/page-object/platforms/selenium_webdriver/page_object.rb +2 -2
  26. data/lib/page-object/platforms/watir_webdriver/element.rb +7 -0
  27. data/lib/page-object/platforms/watir_webdriver/page_object.rb +2 -2
  28. data/lib/page-object/version.rb +1 -1
  29. data/spec/page-object/elements/selenium_element_spec.rb +5 -0
  30. data/spec/page-object/elements/watir_element_spec.rb +6 -0
  31. data/spec/page-object/page_factory_spec.rb +9 -0
  32. data/spec/page-object/platforms/watir_webdriver/watir_page_object_spec.rb +29 -0
  33. data/spec/page-object/platforms/watir_webdriver_spec.rb +0 -24
  34. data/spec/page-object/selenium_accessors_spec.rb +14 -0
  35. data/spec/page-object/watir_accessors_spec.rb +16 -17
  36. metadata +19 -12
@@ -1,1020 +1,21 @@
1
+ require 'page-object/locator_generator'
2
+
1
3
  module PageObject
2
4
  module ElementLocators
3
-
4
- #
5
- # Finds a button
6
- #
7
- # @param [Hash] identifier how we find a button. You can use a multiple paramaters
8
- # by combining of any of the following except xpath. It defaults to {:index => 0}
9
- # which will find the first button. The valid keys are:
10
- # * :class => Watir and Selenium
11
- # * :css => Watir and Selenium
12
- # * :id => Watir and Selenium
13
- # * :index => Watir and Selenium
14
- # * :name => Watir and Selenium
15
- # * :text => Watir only
16
- # * :value => Watir and Selenium
17
- # * :xpath => Watir and Selenium
18
- # * :src => Watir and Selenium (image button only)
19
- # * :alt => Watir and Selenium (image button only)
20
- #
21
- def button_element(identifier={:index => 0})
22
- platform.button_for(identifier.clone)
23
- end
24
-
25
- #
26
- # Finds all buttons that match the provided identifier
27
- #
28
- # @param [Hash] identifier how we find a button. You can use a multiple paramaters
29
- # by combining of any of the following except xpath. It defaults to an empty
30
- # hash which will find all button elements. The valid keys are:
31
- # * :class => Watir and Selenium
32
- # * :css => Watir and Selenium
33
- # * :id => Watir and Selenium
34
- # * :index => Watir and Selenium
35
- # * :name => Watir and Selenium
36
- # * :text => Watir only
37
- # * :value => Watir and Selenium
38
- # * :xpath => Watir and Selenium
39
- # * :src => Watir and Selenium (image button only)
40
- # * :alt => Watir and Selenium (image button only)
41
- #
42
- def button_elements(identifier={})
43
- platform.buttons_for(identifier.clone)
44
- end
45
-
46
- #
47
- # Finds a text field
48
- #
49
- # @param [Hash] identifier how we find a text field. You can use a multiple paramaters
50
- # by combining of any of the following except xpath. It defaults to {:index=> 0}
51
- # which will find the first text field. The valid keys are:
52
- # * :class => Watir and Selenium
53
- # * :css => Watir and Selenium
54
- # * :id => Watir and Selenium
55
- # * :index => Watir and Selenium
56
- # * :name => Watir and Selenium
57
- # * :tag_name => Watir and Selenium
58
- # * :text => Watir only
59
- # * :title => Watir and Selenium
60
- # * :value => Watir only
61
- # * :xpath => Watir and Selenium
62
- #
63
- def text_field_element(identifier={:index => 0})
64
- platform.text_field_for(identifier.clone)
65
- end
66
-
67
- #
68
- # Finds all text fields that match the provided identifier
69
- #
70
- # @param [Hash] identifier how we find a text field. You can use a multiple paramaters
71
- # by combining of any of the following except xpath. It defaults to an empty Hash
72
- # which will find all text field elements. The valid keys are:
73
- # * :class => Watir and Selenium
74
- # * :css => Watir and Selenium
75
- # * :id => Watir and Selenium
76
- # * :index => Watir and Selenium
77
- # * :name => Watir and Selenium
78
- # * :tag_name => Watir and Selenium
79
- # * :text => Watir only
80
- # * :title => Watir and Selenium
81
- # * :value => Watir only
82
- # * :xpath => Watir and Selenium
83
- #
84
- def text_field_elements(identifier={})
85
- platform.text_fields_for(identifier.clone)
86
- end
87
-
88
- #
89
- # Finds a hidden field
90
- #
91
- # @param [Hash] identifier how we find a hidden field. You can use a multiple paramaters
92
- # by combining of any of the following except xpath. It defaults to {:index => 0}
93
- # which will find the first hidden field. The valid keys are:
94
- # * :class => Watir and Selenium
95
- # * :css => Watir and Selenium
96
- # * :id => Watir and Selenium
97
- # * :index => Watir and Selenium
98
- # * :name => Watir and Selenium
99
- # * :tag_name => Watir and Selenium
100
- # * :text => Watir and Selenium
101
- # * :xpath => Watir and Selenium
102
- #
103
- def hidden_field_element(identifier={:index => 0})
104
- platform.hidden_field_for(identifier.clone)
105
- end
106
-
107
- #
108
- # Finds all hidden fields that match the identifier
109
- #
110
- # @param [Hash] identifier how we find a hidden field. You can use a multiple paramaters
111
- # by combining of any of the following except xpath. It defaults to an empty hash
112
- # which will return all hidden fields. The valid keys are:
113
- # * :class => Watir and Selenium
114
- # * :css => Watir and Selenium
115
- # * :id => Watir and Selenium
116
- # * :index => Watir and Selenium
117
- # * :name => Watir and Selenium
118
- # * :tag_name => Watir and Selenium
119
- # * :text => Watir and Selenium
120
- # * :xpath => Watir and Selenium
121
- #
122
- def hidden_field_elements(identifier={})
123
- platform.hidden_fields_for(identifier.clone)
124
- end
125
-
126
- #
127
- # Finds a text area
128
- #
129
- # @param [Hash] identifier how we find a text area. You can use a multiple paramaters
130
- # by combining of any of the following except xpath. It defaults to {:index => 0}
131
- # which will return the first text area. The valid keys are:
132
- # * :class => Watir and Selenium
133
- # * :css => Watir and Selenium
134
- # * :id => Watir and Selenium
135
- # * :index => Watir and Selenium
136
- # * :name => Watir and Selenium
137
- # * :tag_name => Watir and Selenium
138
- # * :xpath => Watir and Selenium
139
- #
140
- def text_area_element(identifier={:index => 0})
141
- platform.text_area_for(identifier.clone)
142
- end
143
-
144
- #
145
- # Finds all text areas for the provided identifier
146
- #
147
- # @param [Hash] identifier how we find a text area. You can use a multiple paramaters
148
- # by combining of any of the following except xpath. It defaults to an empty hash
149
- # which will return all text areas. The valid keys are:
150
- # * :class => Watir and Selenium
151
- # * :css => Watir and Selenium
152
- # * :id => Watir and Selenium
153
- # * :index => Watir and Selenium
154
- # * :name => Watir and Selenium
155
- # * :tag_name => Watir and Selenium
156
- # * :xpath => Watir and Selenium
157
- #
158
- def text_area_elements(identifier={})
159
- platform.text_areas_for(identifier.clone)
160
- end
161
-
162
- #
163
- # Finds a select list
164
- #
165
- # @param [Hash] identifier how we find a select list. You can use a multiple paramaters
166
- # by combining of any of the following except xpath. It defaults to {:index => 0}
167
- # which will select the first select list. The valid keys are:
168
- # * :class => Watir and Selenium
169
- # * :id => Watir and Selenium
170
- # * :index => Watir and Selenium
171
- # * :name => Watir and Selenium
172
- # * :text => Watir only
173
- # * :value => Watir only
174
- # * :xpath => Watir and Selenium
175
- #
176
- def select_list_element(identifier={:index => 0})
177
- platform.select_list_for(identifier.clone)
178
- end
179
-
180
- #
181
- # Finds all select lists for the provided identifier
182
- #
183
- # @param [Hash] identifier how we find a select list. You can use a multiple paramaters
184
- # by combining of any of the following except xpath. It defaults to an empty Hash
185
- # which will return all select lists. The valid keys are:
186
- # * :class => Watir and Selenium
187
- # * :id => Watir and Selenium
188
- # * :index => Watir and Selenium
189
- # * :name => Watir and Selenium
190
- # * :text => Watir only
191
- # * :value => Watir only
192
- # * :xpath => Watir and Selenium
193
- #
194
- def select_list_elements(identifier={})
195
- platform.select_lists_for(identifier.clone)
196
- end
197
-
198
- #
199
- # Finds a link
200
- #
201
- # @param [Hash] identifier how we find a link. You can use a multiple paramaters
202
- # by combining of any of the following except xpath. It defaults to {:index => 0}
203
- # which will select the first link. The valid keys are:
204
- # * :class => Watir and Selenium
205
- # * :css => Watir and Selenium
206
- # * :href => Watir and Selenium
207
- # * :id => Watir and Selenium
208
- # * :index => Watir and Selenium
209
- # * :link => Watir and Selenium
210
- # * :link_text => Watir and Selenium
211
- # * :name => Watir and Selenium
212
- # * :text => Watir and Selenium
213
- # * :xpath => Watir and Selenium
214
- #
215
- def link_element(identifier={:index => 0})
216
- platform.link_for(identifier.clone)
217
- end
218
-
219
- #
220
- # Find all links for the provided identifier
221
- #
222
- # @param [Hash] identifier how we find a link. You can use a multiple paramaters
223
- # by combining of any of the following except xpath. It defaults to an empty Hash
224
- # which will return all links. The valid keys are:
225
- # * :class => Watir and Selenium
226
- # * :css => Watir and Selenium
227
- # * :href => Watir and Selenium
228
- # * :id => Watir and Selenium
229
- # * :index => Watir and Selenium
230
- # * :link => Watir and Selenium
231
- # * :link_text => Watir and Selenium
232
- # * :name => Watir and Selenium
233
- # * :text => Watir and Selenium
234
- # * :xpath => Watir and Selenium
235
- #
236
- def link_elements(identifier={})
237
- platform.links_for(identifier.clone)
238
- end
239
-
240
- #
241
- # Finds a checkbox
242
- #
243
- # @param [Hash] identifier how we find a checkbox. You can use a multiple paramaters
244
- # by combining of any of the following except xpath. It defaults to {:index => 0}
245
- # which will return the first checkbox. The valid keys are:
246
- # * :class => Watir and Selenium
247
- # * :id => Watir and Selenium
248
- # * :index => Watir and Selenium
249
- # * :name => Watir and Selenium
250
- # * :xpath => Watir and Selenium
251
- #
252
- def checkbox_element(identifier={:index => 0})
253
- platform.checkbox_for(identifier.clone)
254
- end
255
-
256
- #
257
- # Finds all checkbox elements for the provided identifier
258
- #
259
- # @param [Hash] identifier how we find a checkbox. You can use a multiple paramaters
260
- # by combining of any of the following except xpath. It defaults to an empty Hash
261
- # which will return all checkboxes. The valid keys are:
262
- # * :class => Watir and Selenium
263
- # * :id => Watir and Selenium
264
- # * :index => Watir and Selenium
265
- # * :name => Watir and Selenium
266
- # * :xpath => Watir and Selenium
267
- #
268
- def checkbox_elements(identifier={})
269
- platform.checkboxes_for(identifier.clone)
270
- end
271
-
272
- #
273
- # Finds a radio button
274
- #
275
- # @param [Hash] identifier how we find a radio button. You can use a multiple paramaters
276
- # by combining of any of the following except xpath. It defaults to {:index => 0}
277
- # which will return the first radio button. The valid keys are:
278
- # * :class => Watir and Selenium
279
- # * :id => Watir and Selenium
280
- # * :index => Watir and Selenium
281
- # * :name => Watir and Selenium
282
- # * :xpath => Watir and Selenium
283
- #
284
- def radio_button_element(identifier={:index => 0})
285
- platform.radio_button_for(identifier.clone)
286
- end
287
-
288
- #
289
- # Finds all radio button elements that match the provided identifier
290
- #
291
- # @param [Hash] identifier how we find a radio button. You can use a multiple paramaters
292
- # by combining of any of the following except xpath. It defaults to an empty Hash
293
- # which will return all radio buttons. The valid keys are:
294
- # * :class => Watir and Selenium
295
- # * :id => Watir and Selenium
296
- # * :index => Watir and Selenium
297
- # * :name => Watir and Selenium
298
- # * :xpath => Watir and Selenium
299
- #
300
- def radio_button_elements(identifier={})
301
- platform.radio_buttons_for(identifier.clone)
302
- end
303
-
304
- #
305
- # Finds a div
306
- #
307
- # @param [Hash] identifier how we find a div. You can use a multiple paramaters
308
- # by combining of any of the following except xpath. It defaults to {:index => 0}
309
- # which will return the first div. The valid keys are:
310
- # * :class => Watir and Selenium
311
- # * :id => Watir and Selenium
312
- # * :index => Watir and Selenium
313
- # * :name => Watir and Selenium
314
- # * :text => Watir and Selenium
315
- # * :xpath => Watir and Selenium
316
- #
317
- def div_element(identifier={:index => 0})
318
- platform.div_for(identifier.clone)
319
- end
320
-
321
- #
322
- # Finds all divs that match the provided identifier
323
- #
324
- # @param [Hash] identifier how we find a div. You can use a multiple paramaters
325
- # by combining of any of the following except xpath. It defaults to an empty Hash
326
- # which will return all divs. The valid keys are:
327
- # * :class => Watir and Selenium
328
- # * :id => Watir and Selenium
329
- # * :index => Watir and Selenium
330
- # * :name => Watir and Selenium
331
- # * :text => Watir and Selenium
332
- # * :xpath => Watir and Selenium
333
- #
334
- def div_elements(identifier={})
335
- platform.divs_for(identifier.clone)
336
- end
337
-
338
- #
339
- # Finds a span
340
- #
341
- # @param [Hash] identifier how we find a span. You can use a multiple paramaters
342
- # by combining of any of the following except xpath. It defaults to {:index => 0}
343
- # which will return the first span element. The valid keys are:
344
- # * :class => Watir and Selenium
345
- # * :id => Watir and Selenium
346
- # * :index => Watir and Selenium
347
- # * :name => Watir and Selenium
348
- # * :xpath => Watir and Selenium
349
- #
350
- def span_element(identifier={:index => 0})
351
- platform.span_for(identifier.clone)
352
- end
353
-
354
- #
355
- # Finds all span elements that match the provided identifier
356
- #
357
- # @param [Hash] identifier how we find a span. You can use a multiple paramaters
358
- # by combining of any of the following except xpath. It defaults to an empty Hash
359
- # which will return all of the spans. The valid keys are:
360
- # * :class => Watir and Selenium
361
- # * :id => Watir and Selenium
362
- # * :index => Watir and Selenium
363
- # * :name => Watir and Selenium
364
- # * :xpath => Watir and Selenium
365
- #
366
- def span_elements(identifier={})
367
- platform.spans_for(identifier.clone)
368
- end
369
-
370
- #
371
- # Finds a table
372
- #
373
- # @param [Hash] identifier how we find a table. You can use a multiple paramaters
374
- # by combining of any of the following except xpath. It defaults to {:index => 0}
375
- # which will return the first table. The valid keys are:
376
- # * :class => Watir and Selenium
377
- # * :id => Watir and Selenium
378
- # * :index => Watir and Selenium
379
- # * :name => Watir and Selenium
380
- # * :xpath => Watir and Selenium
381
- #
382
- def table_element(identifier={:index => 0})
383
- platform.table_for(identifier.clone)
384
- end
385
-
386
- #
387
- # Finds all tables that match the provided identifier
388
- #
389
- # @param [Hash] identifier how we find a table. You can use a multiple paramaters
390
- # by combining of any of the following except xpath. It defaults to an empty Hash
391
- # which will return all tables. The valid keys are:
392
- # * :class => Watir and Selenium
393
- # * :id => Watir and Selenium
394
- # * :index => Watir and Selenium
395
- # * :name => Watir and Selenium
396
- # * :xpath => Watir and Selenium
397
- #
398
- def table_elements(identifier={})
399
- platform.tables_for(identifier.clone)
400
- end
401
-
402
- #
403
- # Finds a table cell
404
- #
405
- # @param [Hash] identifier how we find a cell. You can use a multiple paramaters
406
- # by combining of any of the following except xpath. It defaults to {:index => 0}
407
- # which will return the first cell. The valid keys are:
408
- # * :class => Watir and Selenium
409
- # * :id => Watir and Selenium
410
- # * :index => Watir only
411
- # * :name => Watir and Selenium
412
- # * :text => Watir and Selenium
413
- # * :xpath => Watir and Selenium
414
- #
415
- def cell_element(identifier={:index => 0})
416
- platform.cell_for(identifier.clone)
417
- end
418
-
419
- #
420
- # Finds all table cell elements that match the provided identifier
421
- #
422
- # @param [Hash] identifier how we find a cell. You can use a multiple paramaters
423
- # by combining of any of the following except xpath. It defaults to an empty Hash
424
- # which will return all table cells. The valid keys are:
425
- # * :class => Watir and Selenium
426
- # * :id => Watir and Selenium
427
- # * :index => Watir only
428
- # * :name => Watir and Selenium
429
- # * :text => Watir and Selenium
430
- # * :xpath => Watir and Selenium
431
- #
432
- def cell_elements(identifier={})
433
- platform.cells_for(identifier.clone)
434
- end
435
-
436
- #
437
- # Finds an image
438
- #
439
- # @param [Hash] identifier how we find an image. You can use a multiple paramaters
440
- # by combining of any of the following except xpath. It defaults to {:index => 0}
441
- # which will return the first image. The valid keys are:
442
- # * :class => Watir and Selenium
443
- # * :id => Watir and Selenium
444
- # * :index => Watir and Selenium
445
- # * :name => Watir and Selenium
446
- # * :xpath => Watir and Selenium
447
- #
448
- def image_element(identifier={:index => 0})
449
- platform.image_for(identifier.clone)
450
- end
451
-
452
- #
453
- # Finds all images that match the provided identifier
454
- #
455
- # @param [Hash] identifier how we find an image. You can use a multiple paramaters
456
- # by combining of any of the following except xpath. It defaults to an empth Hash
457
- # which will return all images. The valid keys are:
458
- # * :class => Watir and Selenium
459
- # * :id => Watir and Selenium
460
- # * :index => Watir and Selenium
461
- # * :name => Watir and Selenium
462
- # * :xpath => Watir and Selenium
463
- #
464
- def image_elements(identifier={})
465
- platform.images_for(identifier.clone)
466
- end
467
-
468
- #
469
- # Finds a form
470
- #
471
- # @param [Hash] identifier how we find a form. You can use a multiple paramaters
472
- # by combining of any of the following except xpath. It defaults to {:index => 0}
473
- # which will return the first form. The valid keys are:
474
- # * :class => Watir and Selenium
475
- # * :id => Watir and Selenium
476
- # * :index => Watir and Selenium
477
- # * :xpath => Watir and Selenium
478
- #
479
- def form_element(identifier={:index => 0})
480
- platform.form_for(identifier.clone)
481
- end
482
-
483
- #
484
- # Finds all forms that match the provided identifier
485
- #
486
- # @param [Hash] identifier how we find a form. You can use a multiple paramaters
487
- # by combining of any of the following except xpath. It defaults to an empty Hash
488
- # which will return all forms. The valid keys are:
489
- # * :class => Watir and Selenium
490
- # * :id => Watir and Selenium
491
- # * :index => Watir and Selenium
492
- # * :xpath => Watir and Selenium
493
- #
494
- def form_elements(identifier={})
495
- platform.forms_for(identifier.clone)
496
- end
497
-
498
- #
499
- # Finds a list item
500
- #
501
- # @param [Hash] identifier how we find a list item. You can use a multiple paramaters
502
- # by combining of any of the following except xpath. It defaults to {:index => 0}
503
- # whcih will return the first list item. The valid keys are:
504
- # * :class => Watir and Selenium
505
- # * :id => Watir and Selenium
506
- # * :index => Watir and Selenium
507
- # * :name => Watir and Selenium
508
- # * :xpath => Watir and Selenium
509
- #
510
- def list_item_element(identifier={:index => 0})
511
- platform.list_item_for(identifier.clone)
512
- end
513
-
514
- #
515
- # Finds all list items that match the identifier
516
- #
517
- # @param [Hash] identifier how we find a list item. You can use a multiple paramaters
518
- # by combining of any of the following except xpath. It defaults to an empty Hash
519
- # which will return all list items. The valid keys are:
520
- # * :class => Watir and Selenium
521
- # * :id => Watir and Selenium
522
- # * :index => Watir and Selenium
523
- # * :name => Watir and Selenium
524
- # * :xpath => Watir and Selenium
525
- #
526
- def list_item_elements(identifier={})
527
- platform.list_items_for(identifier.clone)
528
- end
529
-
530
- #
531
- # Finds an unordered list
532
- #
533
- # @param [Hash] identifier how we find an unordered list. You can use a multiple paramaters
534
- # by combining of any of the following except xpath. It defaults to {:index => 0}
535
- # which will return the first unordered list. The valid keys are:
536
- # * :class => Watir and Selenium
537
- # * :id => Watir and Selenium
538
- # * :index => Watir and Selenium
539
- # * :name => Watir and Selenium
540
- # * :xpath => Watir and Selenium
541
- #
542
- def unordered_list_element(identifier={:index => 0})
543
- platform.unordered_list_for(identifier.clone)
544
- end
545
-
546
- #
547
- # Finds all unordered lists that match the identifier
548
- #
549
- # @param [Hash] identifier how we find an unordered list. You can use a multiple paramaters
550
- # by combining of any of the following except xpath. It defaults to an empty Hash
551
- # which will return all unordered lists. The valid keys are:
552
- # * :class => Watir and Selenium
553
- # * :id => Watir and Selenium
554
- # * :index => Watir and Selenium
555
- # * :name => Watir and Selenium
556
- # * :xpath => Watir and Selenium
557
- #
558
- def unordered_list_elements(identifier={})
559
- platform.unordered_lists_for(identifier.clone)
560
- end
561
-
562
- #
563
- # Finds an ordered list
564
- #
565
- # @param [Hash] identifier how we find an ordered list. You can use a multiple paramaters
566
- # by combining of any of the following except xpath. It defaults to {:index => 0}
567
- # whcih will return the first ordered list. The valid keys are:
568
- # * :class => Watir and Selenium
569
- # * :id => Watir and Selenium
570
- # * :index => Watir and Selenium
571
- # * :name => Watir and Selenium
572
- # * :xpath => Watir and Selenium
573
- #
574
- def ordered_list_element(identifier={:index => 0})
575
- platform.ordered_list_for(identifier.clone)
576
- end
577
-
578
- #
579
- # Finds all ordered lists that match the identifier
580
- #
581
- # @param [Hash] identifier how we find an ordered list. You can use a multiple paramaters
582
- # by combining of any of the following except xpath. It defaults to an empty Hash
583
- # which returns all ordered lists. The valid keys are:
584
- # * :class => Watir and Selenium
585
- # * :id => Watir and Selenium
586
- # * :index => Watir and Selenium
587
- # * :name => Watir and Selenium
588
- # * :xpath => Watir and Selenium
589
- #
590
- def ordered_list_elements(identifier={})
591
- platform.ordered_lists_for(identifier.clone)
592
- end
593
-
594
- #
595
- # Finds a h1
596
- #
597
- # @param [Hash] identifier how we find a H1. You can use a multiple paramaters
598
- # by combining of any of the following except xpath. It defaults to {:index => 0}
599
- # which will return the first h1. The valid keys are:
600
- # * :class => Watir and Selenium
601
- # * :id => Watir and Selenium
602
- # * :index => Watir and Selenium
603
- # * :name => Watir and Selenium
604
- # * :xpath => Watir and Selenium
605
- #
606
- def h1_element(identifier={:index => 0})
607
- platform.h1_for(identifier.clone)
608
- end
609
-
610
- #
611
- # Finds all h1 elements matching the identifier
612
- #
613
- # @param [Hash] identifier how we find a H1. You can use a multiple paramaters
614
- # by combining of any of the following except xpath. It defaults to an empty Hash
615
- # which will return all h1s. The valid keys are:
616
- # * :class => Watir and Selenium
617
- # * :id => Watir and Selenium
618
- # * :index => Watir and Selenium
619
- # * :name => Watir and Selenium
620
- # * :xpath => Watir and Selenium
621
- #
622
- def h1_elements(identifier={})
623
- platform.h1s_for(identifier.clone)
624
- end
625
-
626
- #
627
- # Finds a h2
628
- #
629
- # @param [Hash] identifier how we find a H2. You can use a multiple paramaters
630
- # by combining of any of the following except xpath. It defaults to {:index => 0}
631
- # which will return the first h2. The valid keys are:
632
- # * :class => Watir and Selenium
633
- # * :id => Watir and Selenium
634
- # * :index => Watir and Selenium
635
- # * :name => Watir and Selenium
636
- # * :xpath => Watir and Selenium
637
- #
638
- def h2_element(identifier={:index => 0})
639
- platform.h2_for(identifier.clone)
640
- end
641
-
642
- #
643
- # Finds all h2 elements matching the identifier
644
- #
645
- # @param [Hash] identifier how we find a H2. You can use a multiple paramaters
646
- # by combining of any of the following except xpath. It defaults to an empty Hash
647
- # which will return all h2s. The valid keys are:
648
- # * :class => Watir and Selenium
649
- # * :id => Watir and Selenium
650
- # * :index => Watir and Selenium
651
- # * :name => Watir and Selenium
652
- # * :xpath => Watir and Selenium
653
- #
654
- def h2_elements(identifier={})
655
- platform.h2s_for(identifier.clone)
656
- end
657
-
658
- #
659
- # Finds a h3
660
- #
661
- # @param [Hash] identifier how we find a H3. You can use a multiple paramaters
662
- # by combining of any of the following except xpath. It defaults to {:index => 0}
663
- # which will return the first h3. The valid keys are:
664
- # * :class => Watir and Selenium
665
- # * :id => Watir and Selenium
666
- # * :index => Watir and Selenium
667
- # * :name => Watir and Selenium
668
- # * :xpath => Watir and Selenium
669
- #
670
- def h3_element(identifier={:index => 0})
671
- platform.h3_for(identifier.clone)
672
- end
673
-
674
- #
675
- # Finds all h3 elements for the identifier
676
- #
677
- # @param [Hash] identifier how we find a H3. You can use a multiple paramaters
678
- # by combining of any of the following except xpath. It defaults to an empty Hash
679
- # which will return all h3s. The valid keys are:
680
- # * :class => Watir and Selenium
681
- # * :id => Watir and Selenium
682
- # * :index => Watir and Selenium
683
- # * :name => Watir and Selenium
684
- # * :xpath => Watir and Selenium
685
- #
686
- def h3_elements(identifier={})
687
- platform.h3s_for(identifier.clone)
688
- end
689
-
690
- #
691
- # Finds a h4
692
- #
693
- # @param [Hash] identifier how we find a H4. You can use a multiple paramaters
694
- # by combining of any of the following except xpath. It defaults to {:index => 0}
695
- # which will select the first h4. The valid keys are:
696
- # * :class => Watir and Selenium
697
- # * :id => Watir and Selenium
698
- # * :index => Watir and Selenium
699
- # * :name => Watir and Selenium
700
- # * :xpath => Watir and Selenium
701
- #
702
- def h4_element(identifier={:index => 0})
703
- platform.h4_for(identifier.clone)
704
- end
705
-
706
- #
707
- # Finds all h4 elements matching the identifier
708
- #
709
- # @param [Hash] identifier how we find a H4. You can use a multiple paramaters
710
- # by combining of any of the following except xpath. It defaults to an empty Hash
711
- # which will select all h4s. The valid keys are:
712
- # * :class => Watir and Selenium
713
- # * :id => Watir and Selenium
714
- # * :index => Watir and Selenium
715
- # * :name => Watir and Selenium
716
- # * :xpath => Watir and Selenium
717
- #
718
- def h4_elements(identifier={})
719
- platform.h4s_for(identifier.clone)
720
- end
721
-
722
- #
723
- # Finds a h5
724
- #
725
- # @param [Hash] identifier how we find a H5. You can use a multiple paramaters
726
- # by combining of any of the following except xpath. It defaults to {:index => 0}
727
- # which will return the first h5 element. The valid keys are:
728
- # * :class => Watir and Selenium
729
- # * :id => Watir and Selenium
730
- # * :index => Watir and Selenium
731
- # * :name => Watir and Selenium
732
- # * :xpath => Watir and Selenium
733
- #
734
- def h5_element(identifier={:index => 0})
735
- platform.h5_for(identifier.clone)
736
- end
737
-
738
- #
739
- # Finds all h5 elements for the identifier
740
- #
741
- # @param [Hash] identifier how we find a H5. You can use a multiple paramaters
742
- # by combining of any of the following except xpath. It defaults to using an empty Hash
743
- # which will return all h5 elements. The valid keys are:
744
- # * :class => Watir and Selenium
745
- # * :id => Watir and Selenium
746
- # * :index => Watir and Selenium
747
- # * :name => Watir and Selenium
748
- # * :xpath => Watir and Selenium
749
- #
750
- def h5_elements(identifier={})
751
- platform.h5s_for(identifier.clone)
752
- end
753
-
754
- #
755
- # Finds a h6
756
- #
757
- # @param [Hash] identifier how we find a H6. You can use a multiple paramaters
758
- # by combining of any of the following except xpath. It defaults to {:index => 0}
759
- # which will return the first h6 element. The valid keys are:
760
- # * :class => Watir and Selenium
761
- # * :id => Watir and Selenium
762
- # * :index => Watir and Selenium
763
- # * :name => Watir and Selenium
764
- # * :xpath => Watir and Selenium
765
- #
766
- def h6_element(identifier={:index => 0})
767
- platform.h6_for(identifier.clone)
768
- end
769
-
770
- #
771
- # Finds all h6 elements matching the identifier
772
- #
773
- # @param [Hash] identifier how we find a H6. You can use a multiple paramaters
774
- # by combining of any of the following except xpath. It defaults to an empty Hash
775
- # which will return all h6 elements. The valid keys are:
776
- # * :class => Watir and Selenium
777
- # * :id => Watir and Selenium
778
- # * :index => Watir and Selenium
779
- # * :name => Watir and Selenium
780
- # * :xpath => Watir and Selenium
781
- #
782
- def h6_elements(identifier={})
783
- platform.h6s_for(identifier.clone)
784
- end
785
-
786
- #
787
- # Finds a paragraph
788
- #
789
- # @param [Hash] identifier how we find a paragraph. You can use a multiple paramaters
790
- # by combining of any of the following except xpath. It defaults to {:index => 0}
791
- # which will return the first paragraph. The valid keys are:
792
- # * :class => Watir and Selenium
793
- # * :id => Watir and Selenium
794
- # * :index => Watir and Selenium
795
- # * :name => Watir and Selenium
796
- # * :xpath => Watir and Selenium
797
- #
798
- def paragraph_element(identifier={:index => 0})
799
- platform.paragraph_for(identifier.clone)
800
- end
801
5
 
802
- #
803
- # Finds all paragraph elements
804
- #
805
- # @param [Hash] identifier how we find a paragraph. You can use a multiple paramaters
806
- # by combining of any of the following except xpath. It defaults to an empty Hash
807
- # which will return all paragraphs. The valid keys are:
808
- # * :class => Watir and Selenium
809
- # * :id => Watir and Selenium
810
- # * :index => Watir and Selenium
811
- # * :name => Watir and Selenium
812
- # * :xpath => Watir and Selenium
813
- #
814
- def paragraph_elements(identifier={})
815
- platform.paragraphs_for(identifier.clone)
6
+ def self.included(cls)
7
+ ::PageObject::LocatorGenerator.generate_locators(cls)
816
8
  end
817
9
 
818
- #
819
- # Finds a label
820
- #
821
- # @param [Hash] identifier how we find a label. You can use a multiple paramaters
822
- # by combining of any of the following except xpath. It defaults to {:index => 0}
823
- # whcih will return the first label. The valid keys are:
824
- # * :class => Watir and Selenium
825
- # * :id => Watir and Selenium
826
- # * :index => Watir and Selenium
827
- # * :name => Watir and Selenium
828
- # * :text => Watir and Selenium
829
- # * :xpath => Watir and Selenium
830
- #
831
- def label_element(identifier={:index => 0})
832
- platform.label_for(identifier.clone)
833
- end
834
-
835
- #
836
- # Finds all labels that match the provided identifier
837
- #
838
- # @param [Hash] identifier how we find a label. You can use a multiple paramaters
839
- # by combining of any of the following except xpath. It defaults to an empty hash
840
- # which returns all labels. The valid keys are:
841
- # * :class => Watir and Selenium
842
- # * :id => Watir and Selenium
843
- # * :index => Watir and Selenium
844
- # * :name => Watir and Selenium
845
- # * :text => Watir and Selenium
846
- # * :xpath => Watir and Selenium
847
- #
848
- def label_elements(identifier={})
849
- platform.labels_for(identifier.clone)
850
- end
851
-
852
- #
853
- # Finds a file field
854
- #
855
- # @param [Hash] identifier how we find a file field. You can use a multiple paramaters
856
- # by combining of any of the following except xpath. It defaults to {:index => 0}
857
- # which will return the first file field. The valid keys are:
858
- # * :class => Watir and Selenium
859
- # * :id => Watir and Selenium
860
- # * :index => Watir and Selenium
861
- # * :name => Watir and Selenium
862
- # * :title => Watir and Selenium
863
- # * :xpath => Watir and Selenium
864
- def file_field_element(identifier={:index => 0})
865
- platform.file_field_for(identifier.clone)
866
- end
867
-
868
- #
869
- # Finds all file fields that match the provided identifier
870
- #
871
- # @param [Hash] identifier how we find a file field. You can use a multiple paramaters
872
- # by combining of any of the following except xpath. It defaults to and empty Hash
873
- # which will return all file fields. The valid keys are:
874
- # * :class => Watir and Selenium
875
- # * :id => Watir and Selenium
876
- # * :index => Watir and Selenium
877
- # * :name => Watir and Selenium
878
- # * :title => Watir and Selenium
879
- # * :xpath => Watir and Selenium
880
- def file_field_elements(identifier={})
881
- platform.file_fields_for(identifier.clone)
882
- end
883
-
884
- #
885
- # Finds an area
886
- #
887
- # @param [Hash] identifier how we find an area. You can use a multiple paramaters
888
- # by combining of any of the following except xpath. It defaults to {:index => 0}
889
- # which will return the first file field. The valid keys are:
890
- # * :class => Watir and Selenium
891
- # * :id => Watir and Selenium
892
- # * :index => Watir and Selenium
893
- # * :name => Watir and Selenium
894
- # * :xpath => Watir and Selenium
895
- def area_element(identifier={:index => 0})
896
- platform.area_for(identifier.clone)
897
- end
898
-
899
- #
900
- # Finds all areas that match the provided identifier
901
- #
902
- # @param [Hash] identifier how we find an area. You can use a multiple paramaters
903
- # by combining of any of the following except xpath. It defaults to and empty Hash
904
- # which will return all file fields. The valid keys are:
905
- # * :class => Watir and Selenium
906
- # * :id => Watir and Selenium
907
- # * :index => Watir and Selenium
908
- # * :name => Watir and Selenium
909
- # * :xpath => Watir and Selenium
910
- def area_elements(identifier={})
911
- platform.areas_for(identifier.clone)
912
- end
913
-
914
- #
915
- # Finds a canvas
916
- #
917
- # @param [Hash] identifier how we find a canvas. You can use a multiple paramaters
918
- # by combining of any of the following except xpath. It defaults to {:index => 0}
919
- # which will return the first file field. The valid keys are:
920
- # * :class => Watir and Selenium
921
- # * :id => Watir and Selenium
922
- # * :index => Watir and Selenium
923
- # * :name => Watir and Selenium
924
- # * :xpath => Watir and Selenium
925
- def canvas_element(identifier={:index => 0})
926
- platform.canvas_for(identifier.clone)
927
- end
928
-
929
- #
930
- # Finds all canvases that match the provided identifier
931
- #
932
- # @param [Hash] identifier how we find a canvas. You can use a multiple paramaters
933
- # by combining of any of the following except xpath. It defaults to and empty Hash
934
- # which will return all file fields. The valid keys are:
935
- # * :class => Watir and Selenium
936
- # * :id => Watir and Selenium
937
- # * :index => Watir and Selenium
938
- # * :name => Watir and Selenium
939
- # * :xpath => Watir and Selenium
940
- def canvas_elements(identifier={})
941
- platform.canvases_for(identifier.clone)
942
- end
943
-
944
- #
945
- # Finds an audio element
946
- #
947
- # @param [Hash] identifier how we find an audio. You can use a multiple paramaters
948
- # by combining of any of the following except xpath. It defaults to {:index => 0}
949
- # which will return the first file field. The valid keys are:
950
- # * :class => Watir and Selenium
951
- # * :id => Watir and Selenium
952
- # * :index => Watir and Selenium
953
- # * :name => Watir and Selenium
954
- # * :xpath => Watir and Selenium
955
- def audio_element(identifier={:index => 0})
956
- platform.audio_for(identifier.clone)
957
- end
958
-
959
- #
960
- # Finds all audio elements that match the provided identifier
961
- #
962
- # @param [Hash] identifier how we find an audio element. You can use a multiple paramaters
963
- # by combining of any of the following except xpath. It defaults to and empty Hash
964
- # which will return all file fields. The valid keys are:
965
- # * :class => Watir and Selenium
966
- # * :id => Watir and Selenium
967
- # * :index => Watir and Selenium
968
- # * :name => Watir and Selenium
969
- # * :xpath => Watir and Selenium
970
- def audio_elements(identifier={})
971
- platform.audios_for(identifier.clone)
10
+ def element(tag, identifier={:index => 0})
11
+ platform.element_for(tag, identifier.clone)
972
12
  end
973
13
 
974
- #
975
- # Finds a video element
976
- #
977
- # @param [Hash] identifier how we find a video. You can use a multiple paramaters
978
- # by combining of any of the following except xpath. It defaults to {:index => 0}
979
- # which will return the first file field. The valid keys are:
980
- # * :class => Watir and Selenium
981
- # * :id => Watir and Selenium
982
- # * :index => Watir and Selenium
983
- # * :name => Watir and Selenium
984
- # * :xpath => Watir and Selenium
985
- def video_element(identifier={:index => 0})
986
- platform.video_for(identifier.clone)
987
- end
14
+ private
988
15
 
989
- #
990
- # Finds all video elements that match the provided identifier
991
- #
992
- # @param [Hash] identifier how we find a video element. You can use a multiple paramaters
993
- # by combining of any of the following except xpath. It defaults to and empty Hash
994
- # which will return all file fields. The valid keys are:
995
- # * :class => Watir and Selenium
996
- # * :id => Watir and Selenium
997
- # * :index => Watir and Selenium
998
- # * :name => Watir and Selenium
999
- # * :xpath => Watir and Selenium
1000
- def video_elements(identifier={})
1001
- platform.videos_for(identifier.clone)
16
+ def locator(identifier)
17
+ identifier[0] ? identifier[0] : {:index => 0}
1002
18
  end
1003
19
 
1004
- #
1005
- # Finds an element
1006
- #
1007
- # @param [Symbol] the name of the tag for the element
1008
- # @param [Hash] identifier how we find an element. You can use a multiple paramaters
1009
- # by combining of any of the following except xpath. The valid keys are:
1010
- # * :class => Watir and Selenium
1011
- # * :id => Watir and Selenium
1012
- # * :index => Watir and Selenium
1013
- # * :name => Watir and Selenium
1014
- # * :xpath => Watir and Selenium
1015
- #
1016
- def element(tag, identifier={:index => 0})
1017
- platform.element_for(tag, identifier.clone)
1018
- end
1019
20
  end
1020
21
  end