druid-ts 1.1.3 → 1.1.4

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 (56) hide show
  1. checksums.yaml +4 -4
  2. data/ChangeLog +27 -0
  3. data/features/async.feature +6 -0
  4. data/features/div.feature +1 -0
  5. data/features/element.feature +4 -0
  6. data/features/hidden_field.feature +0 -2
  7. data/features/html/async.html +13 -0
  8. data/features/html/multi_elements.html +4 -0
  9. data/features/html/static_elements.html +10 -3
  10. data/features/link.feature +1 -0
  11. data/features/multi_elements.feature +135 -25
  12. data/features/select_list.feature +8 -0
  13. data/features/span.feature +2 -0
  14. data/features/step_definations/async_steps.rb +17 -0
  15. data/features/step_definations/element_steps.rb +6 -0
  16. data/features/step_definations/multi_elements_steps.rb +96 -0
  17. data/features/step_definations/select_list_steps.rb +12 -0
  18. data/features/step_definations/table_steps.rb +20 -3
  19. data/features/support/ajax_test_environment.rb +1 -1
  20. data/features/support/page.rb +7 -2
  21. data/features/table.feature +35 -0
  22. data/features/text_area.feature +0 -2
  23. data/features/text_field.feature +1 -2
  24. data/lib/druid.rb +31 -3
  25. data/lib/druid/accessors.rb +184 -146
  26. data/lib/druid/assist.rb +10 -2
  27. data/lib/druid/element_locators.rb +186 -102
  28. data/lib/druid/elements/div.rb +1 -1
  29. data/lib/druid/elements/element.rb +131 -96
  30. data/lib/druid/elements/hidden_field.rb +1 -5
  31. data/lib/druid/elements/link.rb +1 -1
  32. data/lib/druid/elements/select_list.rb +8 -0
  33. data/lib/druid/elements/span.rb +1 -1
  34. data/lib/druid/elements/table.rb +14 -3
  35. data/lib/druid/elements/table_row.rb +17 -2
  36. data/lib/druid/elements/text_area.rb +0 -8
  37. data/lib/druid/elements/text_field.rb +1 -1
  38. data/lib/druid/javascript/yui.rb +19 -0
  39. data/lib/druid/javascript_framework_facade.rb +3 -1
  40. data/lib/druid/nested_elements.rb +1 -1
  41. data/lib/druid/page_factory.rb +25 -0
  42. data/lib/druid/page_populator.rb +1 -0
  43. data/lib/druid/version.rb +1 -1
  44. data/spec/druid/accessors_spec.rb +189 -1
  45. data/spec/druid/druid_spec.rb +6 -0
  46. data/spec/druid/element_locators_spec.rb +276 -0
  47. data/spec/druid/elements/div_spec.rb +1 -1
  48. data/spec/druid/elements/element_spec.rb +11 -0
  49. data/spec/druid/elements/hidden_field_spec.rb +0 -5
  50. data/spec/druid/elements/link_spec.rb +1 -1
  51. data/spec/druid/elements/span_spec.rb +1 -1
  52. data/spec/druid/elements/text_area_spec.rb +0 -5
  53. data/spec/druid/elements/text_field_spec.rb +1 -1
  54. data/spec/druid/page_factory_spec.rb +20 -0
  55. data/spec/druid/page_populator_spec.rb +8 -4
  56. metadata +2 -1
data/lib/druid/assist.rb CHANGED
@@ -23,7 +23,8 @@ module Druid
23
23
  # retrieve an array of hidden field elements
24
24
  #
25
25
  def text_fields_for(identifier)
26
- find_elements("text_fields(identifier)", Elements::TextField, identifier)
26
+ elements = find_elements("text_fields(identifier)", Elements::TextField, identifier)
27
+ elements.select {|e| e.element.tag_name == "input"}
27
28
  end
28
29
 
29
30
  def text_field_value_for identifier
@@ -233,7 +234,7 @@ module Druid
233
234
  end
234
235
 
235
236
  def text_area_value_set identifier, value
236
- process_call("textarea(identifier).send_keys(value)", Elements::TextArea, identifier, value)
237
+ process_call("textarea(identifier).set(value)", Elements::TextArea, identifier, value)
237
238
  end
238
239
 
239
240
  def text_area_value_for identifier
@@ -373,6 +374,13 @@ module Druid
373
374
  find_element("file_field(identifier)", Elements::FileField, identifier)
374
375
  end
375
376
 
377
+ #
378
+ # retrieve an array of file field elements
379
+ #
380
+ def file_fields_for identifier
381
+ find_elements("file_fields(identifier)", Elements::FileField, identifier)
382
+ end
383
+
376
384
  #
377
385
  # method to return the text for a label
378
386
  #
@@ -5,7 +5,8 @@ module Druid
5
5
  # Finds a button
6
6
  #
7
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. The valid keys are:
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:
9
10
  # * :class
10
11
  # * :id
11
12
  # * :index
@@ -17,7 +18,7 @@ module Druid
17
18
  # * :alt
18
19
  # * :css
19
20
  #
20
- def button_element identifier
21
+ def button_element(identifier={:index => 0})
21
22
  button_for identifier.clone
22
23
  end
23
24
 
@@ -25,7 +26,8 @@ module Druid
25
26
  # Finds all buttons that match the provided identifier
26
27
  #
27
28
  # @param [Hash] identifier how we find all buttons. You can use a multiple paramaters
28
- # by combining of any of the following except xpath. The valid keys are:
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:
29
31
  # * :class
30
32
  # * :id
31
33
  # * :index
@@ -37,7 +39,7 @@ module Druid
37
39
  # * :alt
38
40
  # * :css
39
41
  #
40
- def button_elements identifier
42
+ def button_elements(identifier={})
41
43
  buttons_for identifier.clone
42
44
  end
43
45
 
@@ -45,7 +47,8 @@ module Druid
45
47
  # Finds a text field
46
48
  #
47
49
  # @param [Hash] identifier how we find a text field. You can use a multiple parameters
48
- # by combining of any of the following except xpath. The valid keys are:
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:
49
52
  # * :class
50
53
  # * :css
51
54
  # * :id
@@ -56,7 +59,7 @@ module Druid
56
59
  # * :xpath
57
60
  # * :title
58
61
  #
59
- def text_field_element identifier
62
+ def text_field_element(identifier={:index => 0})
60
63
  text_field_for identifier.clone
61
64
  end
62
65
 
@@ -64,7 +67,8 @@ module Druid
64
67
  # Finds all text fields that match the provided identifier
65
68
  #
66
69
  # @param [Hash] identifier how we find all text fields. You can use a multiple parameters
67
- # by combining of any of the following except xpath. The valid keys are:
70
+ # by combining of any of the following except xpath. It defaults to empty Hash
71
+ # which will find all text field elements. The valid keys are:
68
72
  #
69
73
  # * :class
70
74
  # * :css
@@ -76,7 +80,7 @@ module Druid
76
80
  # * :xpath
77
81
  # * :title
78
82
  #
79
- def text_field_elements(identifier)
83
+ def text_field_elements(identifier={})
80
84
  text_fields_for identifier.clone
81
85
  end
82
86
 
@@ -84,7 +88,8 @@ module Druid
84
88
  # Finds a hidden field
85
89
  #
86
90
  # @param [Hash] identifier how we find a hidden field. You can use a multiple parameters
87
- # by combining of any of the following except xpath. The valid keys are:
91
+ # by combining of any of the following except xpath. It defaults to {:index => 0}
92
+ # which will find the first hidden field. The valid keys are:
88
93
  # * :class
89
94
  # * :css
90
95
  # * :id
@@ -95,7 +100,7 @@ module Druid
95
100
  # * :xpath
96
101
  # * :value
97
102
  #
98
- def hidden_field_element identifier
103
+ def hidden_field_element(identifier={:index => 0})
99
104
  hidden_field_for identifier.clone
100
105
  end
101
106
 
@@ -103,7 +108,8 @@ module Druid
103
108
  # Finds all hidden fields that match the identifier
104
109
  #
105
110
  # @param [Hash] identifier how we find all hidden fields. You can use a multiple parameters
106
- # by combining of any of the following except xpath. The valid keys are:
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:
107
113
  #
108
114
  # * :class
109
115
  # * :css
@@ -115,7 +121,7 @@ module Druid
115
121
  # * :xpath
116
122
  # * :value
117
123
  #
118
- def hidden_field_elements identifier
124
+ def hidden_field_elements(identifier={})
119
125
  hidden_fields_for identifier.clone
120
126
  end
121
127
 
@@ -123,7 +129,8 @@ module Druid
123
129
  # Finds a text area
124
130
  #
125
131
  # @param [Hash] identifier how we find a text area. You can use a multiple parameters
126
- # by combining of any of the following except xpath. The valid keys are:
132
+ # by combining of any of the following except xpath. It defaults to {:index => 0}
133
+ # which will find the first text area. The valid keys are:
127
134
  # * :class
128
135
  # * :css
129
136
  # * :id
@@ -132,7 +139,7 @@ module Druid
132
139
  # * :tag_name
133
140
  # * :xpath
134
141
  #
135
- def text_area_element identifier
142
+ def text_area_element(identifier={:index => 0})
136
143
  text_area_for identifier.clone
137
144
  end
138
145
 
@@ -140,7 +147,8 @@ module Druid
140
147
  # Finds all text areas for the provided identifier
141
148
  #
142
149
  # @param [Hash] identifier how we find all text areas. You can use a multiple parameters
143
- # by combining of any of the following except xpath. The valid keys are:
150
+ # by combining of any of the following except xpath. It defaults to empty Hash
151
+ # which will return all text areas. The valid keys are:
144
152
  # * :class
145
153
  # * :css
146
154
  # * :id
@@ -149,7 +157,7 @@ module Druid
149
157
  # * :tag_name
150
158
  # * :xpath
151
159
  #
152
- def text_area_elements identifier
160
+ def text_area_elements(identifier={})
153
161
  text_areas_for identifier.clone
154
162
  end
155
163
 
@@ -157,7 +165,8 @@ module Druid
157
165
  # Finds a select list
158
166
  #
159
167
  # @param [Hash] identifier how we find a select list. You can use a multiple parameters
160
- # by combining of any of the following except xpath. The valid keys are:
168
+ # by combining of any of the following except xpath. It defaults to {:index => 0}
169
+ # Which will find the first select list The valid keys are:
161
170
  # * :class
162
171
  # * :id
163
172
  # * :index
@@ -166,7 +175,7 @@ module Druid
166
175
  # * :value
167
176
  # * :text
168
177
  #
169
- def select_list_element identifier
178
+ def select_list_element(identifier={:index => 0})
170
179
  select_list_for identifier.clone
171
180
  end
172
181
 
@@ -174,7 +183,8 @@ module Druid
174
183
  # Finds all select lists for the provided identifier
175
184
  #
176
185
  # @param [Hash] identifier how we find all select lists. You can use a multiple paramaters
177
- # by combining of any of the following except xpath. The valid keys are:
186
+ # by combining of any of the following except xpath. It defaults to empty Hash
187
+ # which will return all select lists. The valid keys are:
178
188
  # * :class
179
189
  # * :id
180
190
  # * :index
@@ -183,7 +193,7 @@ module Druid
183
193
  # * :value
184
194
  # * :text
185
195
  #
186
- def select_list_elements identifier
196
+ def select_list_elements(identifier={})
187
197
  select_lists_for identifier.clone
188
198
  end
189
199
 
@@ -191,7 +201,8 @@ module Druid
191
201
  # Finds a link
192
202
  #
193
203
  # @param [Hash] identifier how we find a link. You can use a multiple parameters
194
- # by combining of any of the following except xpath. The valid keys are:
204
+ # by combining of any of the following except xpath. It defaults to {:index => 0}
205
+ # which will find the first link. The valid keys are:
195
206
  # * :class
196
207
  # * :href
197
208
  # * :id
@@ -203,7 +214,7 @@ module Druid
203
214
  # * :text
204
215
  # * :css
205
216
  #
206
- def link_element identifier
217
+ def link_element(identifier={:index => 0})
207
218
  link_for identifier.clone
208
219
  end
209
220
 
@@ -211,7 +222,8 @@ module Druid
211
222
  # Finds all links for the provided identifier
212
223
  #
213
224
  # @param [Hash] identifier how we find all links. You can use a multiple parameters
214
- # by combining of any of the following except xpath. The valid keys are:
225
+ # by combining of any of the following except xpath. It defaults to empty hash
226
+ # which will return all links. The valid keys are:
215
227
  # * :class
216
228
  # * :href
217
229
  # * :id
@@ -223,7 +235,7 @@ module Druid
223
235
  # * :text
224
236
  # * :css
225
237
  #
226
- def link_elements identifier
238
+ def link_elements(identifier={})
227
239
  links_for identifier.clone
228
240
  end
229
241
 
@@ -231,7 +243,8 @@ module Druid
231
243
  # Finds a check box
232
244
  #
233
245
  # @param [Hash] identifier how we find a check box. You can use a multiple parameters
234
- # by combining of any of the following except xpath. The valid keys are:
246
+ # by combining of any of the following except xpath. It defaults to {:index => 0}
247
+ # which will find the first checkbox. The valid keys are:
235
248
  # * :class
236
249
  # * :id
237
250
  # * :index
@@ -239,7 +252,7 @@ module Druid
239
252
  # * :xpath
240
253
  # * :value
241
254
  #
242
- def checkbox_element identifier
255
+ def checkbox_element(identifier={:index => 0})
243
256
  checkbox_for identifier.clone
244
257
  end
245
258
 
@@ -247,7 +260,8 @@ module Druid
247
260
  # Finds all checkbox elements for the provided identifier
248
261
  #
249
262
  # @param [Hash] identifier how we find a checkbox. You can use a multiple parameters
250
- # by combining of any of the following except xpath. The valid keys are:
263
+ # by combining of any of the following except xpath. It defaults to empty Hash
264
+ # which will return all checkboxes. The valid keys are:
251
265
  # * :class
252
266
  # * :id
253
267
  # * :index
@@ -255,7 +269,7 @@ module Druid
255
269
  # * :xpath
256
270
  # * :value
257
271
  #
258
- def checkbox_elements identifier
272
+ def checkbox_elements(identifier={})
259
273
  checkboxes_for identifier.clone
260
274
  end
261
275
 
@@ -263,14 +277,15 @@ module Druid
263
277
  # Finds a radio button
264
278
  #
265
279
  # @param [Hash] identifier how we find a radio button. You can use a multiple parameters
266
- # by combining of any of the following except xpath. The valid keys are:
280
+ # by combining of any of the following except xpath. It defaults to {:index => 0}
281
+ # which will find the first radio button. The valid keys are:
267
282
  # * :class
268
283
  # * :id
269
284
  # * :index
270
285
  # * :name
271
286
  # * :xpath
272
287
  #
273
- def radio_button_element identifier
288
+ def radio_button_element(identifier={:index => 0})
274
289
  radio_button_for identifier.clone
275
290
  end
276
291
 
@@ -278,14 +293,15 @@ module Druid
278
293
  # Finds all radio button elements that match the provided identifier
279
294
  #
280
295
  # @param [Hash] identifier how we find a radio button. You can use a multiple parameters
281
- # by combining of any of the following except xpath. The valid keys are:
296
+ # by combining of any of the following except xpath. It defaults to empty Hash
297
+ # which will return all radio buttons. The valid keys are:
282
298
  # * :class
283
299
  # * :id
284
300
  # * :index
285
301
  # * :name
286
302
  # * :xpath
287
303
  #
288
- def radio_button_elements identifier
304
+ def radio_button_elements(identifier={})
289
305
  radio_buttons_for identifier.clone
290
306
  end
291
307
 
@@ -293,7 +309,8 @@ module Druid
293
309
  # Finds a div
294
310
  #
295
311
  # @param [Hash] identifier how we find a div. You can use a multiple parameters
296
- # by combining of any of the following except xpath. The valid keys are:
312
+ # by combining of any of the following except xpath. It defaults to {:index => 0}
313
+ # which will find the first div. The valid keys are:
297
314
  # * :class
298
315
  # * :id
299
316
  # * :index
@@ -301,7 +318,7 @@ module Druid
301
318
  # * :xpath
302
319
  # * :text
303
320
  #
304
- def div_element identifier
321
+ def div_element(identifier={:index => 0})
305
322
  div_for identifier.clone
306
323
  end
307
324
 
@@ -309,7 +326,8 @@ module Druid
309
326
  # Finds all divs that match the provided identifier
310
327
  #
311
328
  # @param [Hash] identifier how we find a div. You can use a multiple parameters
312
- # by combining of any of the following except xpath. The valid keys are:
329
+ # by combining of any of the following except xpath. It defaults to empty Hash
330
+ # which will return all divs. The valid keys are:
313
331
  # * :class
314
332
  # * :id
315
333
  # * :index
@@ -317,7 +335,7 @@ module Druid
317
335
  # * :xpath
318
336
  # * :text
319
337
  #
320
- def div_elements identifier
338
+ def div_elements(identifier={})
321
339
  divs_for identifier
322
340
  end
323
341
 
@@ -325,14 +343,15 @@ module Druid
325
343
  # Finds a span
326
344
  #
327
345
  # @param [Hash] identifier how we find a span. You can use a multiple parameters
328
- # by combining of any of the following except xpath. The valid keys are:
346
+ # by combining of any of the following except xpath. It defaults to {:index => 0}
347
+ # which will find the first span. The valid keys are:
329
348
  # * :class
330
349
  # * :id
331
350
  # * :index
332
351
  # * :name
333
352
  # * :xpath
334
353
  #
335
- def span_element identifier
354
+ def span_element(identifier={:index => 0})
336
355
  span_for identifier.clone
337
356
  end
338
357
 
@@ -340,14 +359,15 @@ module Druid
340
359
  # Finds all span elements that match the provided identifier
341
360
  #
342
361
  # @param [Hash] identifier how we find a span. You can use multiple parameters
343
- # by combining of any of the following except xpath. The valid keys are:
362
+ # by combining of any of the following except xpath. It defaults to empty Hash
363
+ # which will return all spans. The valid keys are:
344
364
  # * :class
345
365
  # * :id
346
366
  # * :index
347
367
  # * :name
348
368
  # * :xpath
349
369
  #
350
- def span_elements identifier
370
+ def span_elements(identifier={})
351
371
  spans_for identifier.clone
352
372
  end
353
373
 
@@ -355,14 +375,15 @@ module Druid
355
375
  # Finds a table
356
376
  #
357
377
  # @param [Hash] identifier how we find a table. You can use a multiple parameters
358
- # by combining of any of the following except xpath. The valid keys are:
378
+ # by combining of any of the following except xpath. It defaults to {:index => 0}
379
+ # which will find the first table. The valid keys are:
359
380
  # * :class
360
381
  # * :id
361
382
  # * :index
362
383
  # * :name
363
384
  # * :xpath
364
385
  #
365
- def table_element identifier
386
+ def table_element(identifier={:index => 0})
366
387
  table_for identifier.clone
367
388
  end
368
389
 
@@ -370,14 +391,15 @@ module Druid
370
391
  # Finds all tables with match the provided identifier
371
392
  #
372
393
  # @param [Hash] identifier how we find a table. You can use a multiple parameters
373
- # by combining of any of the following except xpath. The valid keys are:
394
+ # by combining of any of the following except xpath. It defaults to empty Hash
395
+ # which will return all tables. The valid keys are:
374
396
  # * :class
375
397
  # * :id
376
398
  # * :index
377
399
  # * :name
378
400
  # * :xpath
379
401
  #
380
- def table_elements identifier
402
+ def table_elements(identifier={})
381
403
  tables_for identifier.clone
382
404
  end
383
405
 
@@ -385,7 +407,8 @@ module Druid
385
407
  # Finds a table cell
386
408
  #
387
409
  # @param [Hash] identifier how we find a table cell. You can use a multiple parameters
388
- # by combining of any of the following except xpath. The valid keys are:
410
+ # by combining of any of the following except xpath. It defaults to {:index => 0}
411
+ # which will find the first cell. The valid keys are:
389
412
  # * :class
390
413
  # * :id
391
414
  # * :index
@@ -393,7 +416,7 @@ module Druid
393
416
  # * :xpath
394
417
  # * :text
395
418
  #
396
- def cell_element identifier
419
+ def cell_element(identifier={:index => 0})
397
420
  cell_for identifier.clone
398
421
  end
399
422
 
@@ -401,7 +424,8 @@ module Druid
401
424
  # Finds all table cell elements that match the provided identifier
402
425
  #
403
426
  # @param [Hash] identifier how we find a cell. You can use a multiple parameters
404
- # by combining of any of the following except xpath. The valid keys are:
427
+ # by combining of any of the following except xpath. It defaults to empty Hash
428
+ # which will return all cells. The valid keys are:
405
429
  # * :class
406
430
  # * :id
407
431
  # * :index
@@ -409,7 +433,7 @@ module Druid
409
433
  # * :xpath
410
434
  # * :text
411
435
  #
412
- def cell_elements identifier
436
+ def cell_elements(identifier={})
413
437
  cells_for identifier.clone
414
438
  end
415
439
 
@@ -417,7 +441,8 @@ module Druid
417
441
  # Finds an image
418
442
  #
419
443
  # @param [Hash] identifier how we find an image. You can use a multiple parameters
420
- # by combining of any of the following except xpath. The valid keys are:
444
+ # by combining of any of the following except xpath. It defaults to {:index => 0}
445
+ # which will find the first image. The valid keys are:
421
446
  # * :class
422
447
  # * :id
423
448
  # * :index
@@ -426,7 +451,7 @@ module Druid
426
451
  # * :alt
427
452
  # * :src
428
453
  #
429
- def image_element identifier
454
+ def image_element(identifier={:index => 0})
430
455
  image_for identifier.clone
431
456
  end
432
457
 
@@ -434,7 +459,8 @@ module Druid
434
459
  # Finds all images that match the provided identifier
435
460
  #
436
461
  # @param [Hash] identifier how we find an image. You can use a multiple parameters
437
- # by combining of any of the following except xpath. The valid keys are:
462
+ # by combining of any of the following except xpath. It defaults to empty Hash
463
+ # which will return all images. The valid keys are:
438
464
  # * :class
439
465
  # * :id
440
466
  # * :index
@@ -443,7 +469,7 @@ module Druid
443
469
  # * :alt
444
470
  # * :src
445
471
  #
446
- def image_elements identifier
472
+ def image_elements(identifier={})
447
473
  images_for identifier.clone
448
474
  end
449
475
 
@@ -451,14 +477,15 @@ module Druid
451
477
  # Finds a form
452
478
  #
453
479
  # @param [Hash] identifier how we find a form. You can use a multiple parameters
454
- # by combining of any of the following except xpath. The valid keys are:
480
+ # by combining of any of the following except xpath. It defaults to {:index => 0}
481
+ # which will find the first form. The valid keys are:
455
482
  # * :class
456
483
  # * :id
457
484
  # * :index
458
485
  # * :xpath
459
486
  # * :action
460
487
  #
461
- def form_element identifier
488
+ def form_element(identifier={:index => 0})
462
489
  form_for identifier.clone
463
490
  end
464
491
 
@@ -466,14 +493,15 @@ module Druid
466
493
  # Finds all forms that match the provided identifier
467
494
  #
468
495
  # @param [Hash] identifier how we find a form. You can use a multiple parameters
469
- # by combining of any of the following except xpath. The valid keys are:
496
+ # by combining of any of the following except xpath. It defaults to empty Hash
497
+ # which will return all forms. The valid keys are:
470
498
  # * :class
471
499
  # * :id
472
500
  # * :index
473
501
  # * :xpath
474
502
  # * :action
475
503
  #
476
- def form_elements identifier
504
+ def form_elements(identifier={})
477
505
  forms_for identifier.clone
478
506
  end
479
507
 
@@ -481,14 +509,15 @@ module Druid
481
509
  # Finds a list item
482
510
  #
483
511
  # @param [Hash] identifier how we find a list item. You can use a multiple parameters
484
- # by combining of any of the following except xpath. The valid keys are:
512
+ # by combining of any of the following except xpath. It defaults to {:index => 0}
513
+ # which will find the first list item. The valid keys are:
485
514
  # * :class
486
515
  # * :id
487
516
  # * :index
488
517
  # * :xpath
489
518
  # * :name
490
519
  #
491
- def list_item_element identifier
520
+ def list_item_element(identifier={:index => 0})
492
521
  list_item_for identifier.clone
493
522
  end
494
523
 
@@ -496,14 +525,15 @@ module Druid
496
525
  # Finds all list items that match the identifier
497
526
  #
498
527
  # @param [Hash] identifier how we find a list item. You can use a multiple parameters
499
- # by combining of any of the following except xpath. The valid keys are:
528
+ # by combining of any of the following except xpath. It defaults to empty Hash
529
+ # which will return all list items. The valid keys are:
500
530
  # * :class
501
531
  # * :id
502
532
  # * :index
503
533
  # * :xpath
504
534
  # * :name
505
535
  #
506
- def list_item_elements identifier
536
+ def list_item_elements(identifier={})
507
537
  list_items_for identifier.clone
508
538
  end
509
539
 
@@ -511,14 +541,15 @@ module Druid
511
541
  # Finds an ordered list
512
542
  #
513
543
  # @param [Hash] identifier how we find an ordered list. You can use a multiple parameters
514
- # by combining of any of the following except xpath. The valid keys are:
544
+ # by combining of any of the following except xpath. It defaults to {:index => 0}
545
+ # which will find the first ordered list. The valid keys are:
515
546
  # * :class
516
547
  # * :id
517
548
  # * :index
518
549
  # * :xpath
519
550
  # * :name
520
551
  #
521
- def ordered_list_element identifier
552
+ def ordered_list_element(identifier={:index => 0})
522
553
  ordered_list_for identifier.clone
523
554
  end
524
555
 
@@ -526,14 +557,15 @@ module Druid
526
557
  # Finds all ordered lists that match the provided identifier
527
558
  #
528
559
  # @param [Hash] identifier how we find an ordered list. You can use a multiple parameters
529
- # by combining of any of the following except xpath. The valid keys are:
560
+ # by combining of any of the following except xpath. It defaults to empty Hash
561
+ # which will return all ordered lists. The valid keys are:
530
562
  # * :class
531
563
  # * :id
532
564
  # * :index
533
565
  # * :xpath
534
566
  # * :name
535
567
  #
536
- def ordered_list_elements identifier
568
+ def ordered_list_elements(identifier={})
537
569
  ordered_lists_for identifier.clone
538
570
  end
539
571
 
@@ -541,14 +573,15 @@ module Druid
541
573
  # Finds an unordered list
542
574
  #
543
575
  # @param [Hash] identifier how we find an unordered list. You can use a multiple parameters
544
- # by combining of any of the following except xpath. The valid keys are:
576
+ # by combining of any of the following except xpath. It defaults to {:index => 0}
577
+ # which will find the first unordered list. The valid keys are:
545
578
  # * :class
546
579
  # * :id
547
580
  # * :index
548
581
  # * :xpath
549
582
  # * :name
550
583
  #
551
- def unordered_list_element identifier
584
+ def unordered_list_element(identifier={:index => 0})
552
585
  unordered_list_for identifier.clone
553
586
  end
554
587
 
@@ -556,14 +589,15 @@ module Druid
556
589
  # Finds all unordered lists that match the provided identifier
557
590
  #
558
591
  # @param [Hash] identifier how we find an unordered list. You can use a multiple parameters
559
- # by combining of any of the following except xpath. The valid keys are:
592
+ # by combining of any of the following except xpath. It defaults to empty Hash
593
+ # which will return all unordered lists. The valid keys are:
560
594
  # * :class
561
595
  # * :id
562
596
  # * :index
563
597
  # * :xpath
564
598
  # * :name
565
599
  #
566
- def unordered_list_elements identifier
600
+ def unordered_list_elements(identifier={})
567
601
  unordered_lists_for identifier.clone
568
602
  end
569
603
 
@@ -571,14 +605,15 @@ module Druid
571
605
  # Finds a h1
572
606
  #
573
607
  # @param [Hash] identifier how we find a h1. You can use a multiple parameters
574
- # by combining of any of the following except xpath. The valid keys are:
608
+ # by combining of any of the following except xpath. It defaults to {:index => 0}
609
+ # which will find the first h1. The valid keys are:
575
610
  # * :class
576
611
  # * :id
577
612
  # * :index
578
613
  # * :xpath
579
614
  # * :name
580
615
  #
581
- def h1_element identifier
616
+ def h1_element(identifier={:index => 0})
582
617
  h1_for identifier.clone
583
618
  end
584
619
 
@@ -587,14 +622,15 @@ module Druid
587
622
  #
588
623
  #
589
624
  # @param [Hash] identifier how we find a h1. You can use a multiple parameters
590
- # by combining of any of the following except xpath. The valid keys are:
625
+ # by combining of any of the following except xpath. It defaults to empty hash
626
+ # which will return all h1s. The valid keys are:
591
627
  # * :class
592
628
  # * :id
593
629
  # * :index
594
630
  # * :xpath
595
631
  # * :name
596
632
  #
597
- def h1_elements identifier
633
+ def h1_elements(identifier={})
598
634
  h1s_for identifier.clone
599
635
  end
600
636
 
@@ -602,14 +638,15 @@ module Druid
602
638
  # Finds a h2
603
639
  #
604
640
  # @param [Hash] identifier how we find a h2. You can use a multiple parameters
605
- # by combining of any of the following except xpath. The valid keys are:
641
+ # by combining of any of the following except xpath. It defaults to {:index => 0}
642
+ # which will find the first h2. The valid keys are:
606
643
  # * :class
607
644
  # * :id
608
645
  # * :index
609
646
  # * :xpath
610
647
  # * :name
611
648
  #
612
- def h2_element identifier
649
+ def h2_element(identifier={:index => 0})
613
650
  h2_for identifier.clone
614
651
  end
615
652
 
@@ -618,14 +655,15 @@ module Druid
618
655
  #
619
656
  #
620
657
  # @param [Hash] identifier how we find a h2. You can use a multiple parameters
621
- # by combining of any of the following except xpath. The valid keys are:
658
+ # by combining of any of the following except xpath. It defaults to empty Hash
659
+ # which will return all h2s. The valid keys are:
622
660
  # * :class
623
661
  # * :id
624
662
  # * :index
625
663
  # * :xpath
626
664
  # * :name
627
665
  #
628
- def h2_elements identifier
666
+ def h2_elements(identifier={})
629
667
  h2s_for identifier.clone
630
668
  end
631
669
 
@@ -633,14 +671,15 @@ module Druid
633
671
  # Finds a h3
634
672
  #
635
673
  # @param [Hash] identifier how we find a h3. You can use a multiple parameters
636
- # by combining of any of the following except xpath. The valid keys are:
674
+ # by combining of any of the following except xpath. It defaults to {:index => 0}
675
+ # which will find the first h3. The valid keys are:
637
676
  # * :class
638
677
  # * :id
639
678
  # * :index
640
679
  # * :xpath
641
680
  # * :name
642
681
  #
643
- def h3_element identifier
682
+ def h3_element(identifier={:index => 0})
644
683
  h3_for identifier.clone
645
684
  end
646
685
 
@@ -649,14 +688,15 @@ module Druid
649
688
  #
650
689
  #
651
690
  # @param [Hash] identifier how we find a h3. You can use a multiple parameters
652
- # by combining of any of the following except xpath. The valid keys are:
691
+ # by combining of any of the following except xpath. It defaults to empty Hash
692
+ # which will return all h3s. The valid keys are:
653
693
  # * :class
654
694
  # * :id
655
695
  # * :index
656
696
  # * :xpath
657
697
  # * :name
658
698
  #
659
- def h3_elements identifier
699
+ def h3_elements(identifier={})
660
700
  h3s_for identifier.clone
661
701
  end
662
702
 
@@ -664,14 +704,15 @@ module Druid
664
704
  # Finds a h4
665
705
  #
666
706
  # @param [Hash] identifier how we find a h4. You can use a multiple parameters
667
- # by combining of any of the following except xpath. The valid keys are:
707
+ # by combining of any of the following except xpath. It defaults to {:index => 0}
708
+ # which will find the first h4. The valid keys are:
668
709
  # * :class
669
710
  # * :id
670
711
  # * :index
671
712
  # * :xpath
672
713
  # * :name
673
714
  #
674
- def h4_element identifier
715
+ def h4_element(identifier={:index => 0})
675
716
  h4_for identifier.clone
676
717
  end
677
718
 
@@ -680,14 +721,15 @@ module Druid
680
721
  #
681
722
  #
682
723
  # @param [Hash] identifier how we find a h4. You can use a multiple parameters
683
- # by combining of any of the following except xpath. The valid keys are:
724
+ # by combining of any of the following except xpath. It defaults to empty Hash
725
+ # which will return all h4s. The valid keys are:
684
726
  # * :class
685
727
  # * :id
686
728
  # * :index
687
729
  # * :xpath
688
730
  # * :name
689
731
  #
690
- def h4_elements identifier
732
+ def h4_elements(identifier={})
691
733
  h4s_for identifier.clone
692
734
  end
693
735
 
@@ -695,14 +737,15 @@ module Druid
695
737
  # Finds a h5
696
738
  #
697
739
  # @param [Hash] identifier how we find a h5. You can use a multiple parameters
698
- # by combining of any of the following except xpath. The valid keys are:
740
+ # by combining of any of the following except xpath. It defaults to {:index => 0}
741
+ # which will find the first h5. The valid keys are:
699
742
  # * :class
700
743
  # * :id
701
744
  # * :index
702
745
  # * :xpath
703
746
  # * :name
704
747
  #
705
- def h5_element identifier
748
+ def h5_element(identifier={:index => 0})
706
749
  h5_for identifier.clone
707
750
  end
708
751
 
@@ -711,14 +754,15 @@ module Druid
711
754
  #
712
755
  #
713
756
  # @param [Hash] identifier how we find a h5. You can use a multiple parameters
714
- # by combining of any of the following except xpath. The valid keys are:
757
+ # by combining of any of the following except xpath. It defaults to empty Hash
758
+ # which will return all h5s. The valid keys are:
715
759
  # * :class
716
760
  # * :id
717
761
  # * :index
718
762
  # * :xpath
719
763
  # * :name
720
764
  #
721
- def h5_elements identifier
765
+ def h5_elements(identifier={})
722
766
  h5s_for identifier.clone
723
767
  end
724
768
 
@@ -726,14 +770,15 @@ module Druid
726
770
  # Finds a h6
727
771
  #
728
772
  # @param [Hash] identifier how we find a h6. You can use a multiple parameters
729
- # by combining of any of the following except xpath. The valid keys are:
773
+ # by combining of any of the following except xpath. It defaults to {:index => 0}
774
+ # which will find the first h6. The valid keys are:
730
775
  # * :class
731
776
  # * :id
732
777
  # * :index
733
778
  # * :xpath
734
779
  # * :name
735
780
  #
736
- def h6_element identifier
781
+ def h6_element(identifier={:index => 0})
737
782
  h6_for identifier.clone
738
783
  end
739
784
 
@@ -742,14 +787,15 @@ module Druid
742
787
  #
743
788
  #
744
789
  # @param [Hash] identifier how we find a h6. You can use a multiple parameters
745
- # by combining of any of the following except xpath. The valid keys are:
790
+ # by combining of any of the following except xpath. It defaults to empty Hash
791
+ # which will return all h6s. The valid keys are:
746
792
  # * :class
747
793
  # * :id
748
794
  # * :index
749
795
  # * :xpath
750
796
  # * :name
751
797
  #
752
- def h6_elements identifier
798
+ def h6_elements(identifier={})
753
799
  h6s_for identifier.clone
754
800
  end
755
801
 
@@ -757,14 +803,15 @@ module Druid
757
803
  # Finds a paragraph
758
804
  #
759
805
  # @param [Hash] identifier how we find a paragraph. You can use a multiple parameters
760
- # by combining of any of the following except xpath. The valid keys are:
806
+ # by combining of any of the following except xpath. It defaults to {:index => 0}
807
+ # which will find the first paragraph. The valid keys are:
761
808
  # * :class
762
809
  # * :id
763
810
  # * :index
764
811
  # * :xpath
765
812
  # * :name
766
813
  #
767
- def paragraph_element identifier
814
+ def paragraph_element(identifier={:index => 0})
768
815
  paragraph_for identifier.clone
769
816
  end
770
817
 
@@ -772,14 +819,15 @@ module Druid
772
819
  # Finds all paragraph elements that match the provided identifier
773
820
  #
774
821
  # @param [Hash] identifier how we find a paragraph. You can use a multiple parameters
775
- # by combining of any of the following except xpath. The valid keys are:
822
+ # by combining of any of the following except xpath. It defaults to empty Hash
823
+ # which will return all paragraphs. The valid keys are:
776
824
  # * :class
777
825
  # * :id
778
826
  # * :index
779
827
  # * :xpath
780
828
  # * :name
781
829
  #
782
- def paragraph_elements identifier
830
+ def paragraph_elements(identifier={})
783
831
  paragraphs_for identifier.clone
784
832
  end
785
833
 
@@ -787,7 +835,8 @@ module Druid
787
835
  # Finds a file field
788
836
  #
789
837
  # @param [Hash] identifier how we find a file field. You can use a multiple parameters
790
- # by combining of any of the following except xpath. The valid keys are:
838
+ # by combining of any of the following except xpath. It defaults to {:index => 0}
839
+ # which will find the first file field. The valid keys are:
791
840
  # * :class
792
841
  # * :id
793
842
  # * :index
@@ -795,15 +844,33 @@ module Druid
795
844
  # * :name
796
845
  # * :title
797
846
  #
798
- def file_field_element identifier
847
+ def file_field_element(identifier={:index => 0})
799
848
  file_field_for identifier.clone
800
849
  end
801
850
 
851
+ #
852
+ # Finds all file fields that match the provided identifier
853
+ #
854
+ # @param [Hash] identifier how we find a file field. You can use a multiple parameters
855
+ # by combining of any of the following except xpath. It defaults to empty Hash
856
+ # which will return all file fields. The valid keys are:
857
+ # * :class
858
+ # * :id
859
+ # * :index
860
+ # * :xpath
861
+ # * :name
862
+ # * :title
863
+ #
864
+ def file_field_elements(identifier={})
865
+ file_fields_for identifier.clone
866
+ end
867
+
802
868
  #
803
869
  # Finds a label
804
870
  #
805
871
  # @param [Hash] identifier how we find a label. You can use a multiple paramaters
806
- # by combining of any of the following except xpath. The valid keys are:
872
+ # by combining of any of the following except xpath. It defaults to {:index => 0}
873
+ # which will find the first label. The valid keys are:
807
874
  # * :class
808
875
  # * :id
809
876
  # * :index
@@ -811,7 +878,7 @@ module Druid
811
878
  # * :text
812
879
  # * :xpath
813
880
  #
814
- def label_element(identifier)
881
+ def label_element(identifier={:index => 0})
815
882
  label_for identifier.clone
816
883
  end
817
884
 
@@ -819,7 +886,8 @@ module Druid
819
886
  # Finds all labels that match the provided identifier
820
887
  #
821
888
  # @param [Hash] identifier how we find a label. You can use a multiple paramaters
822
- # by combining of any of the following except xpath. The valid keys are:
889
+ # by combining of any of the following except xpath. It defaults to empty Hash
890
+ # which will return all lables. The valid keys are:
823
891
  # * :class
824
892
  # * :id
825
893
  # * :index
@@ -827,8 +895,24 @@ module Druid
827
895
  # * :text
828
896
  # * :xpath
829
897
  #
830
- def label_elements(identifier)
898
+ def label_elements(identifier={})
831
899
  labels_for identifier.clone
832
900
  end
901
+
902
+ #
903
+ # Finds an element
904
+ #
905
+ # @param [Symbol] the name of the tag for the element
906
+ # @param [Hash] identifier how we find an element. You can use a multiple parameters
907
+ # by combining of any of the following except xpath. The valid keys are:
908
+ # * :class
909
+ # * :id
910
+ # * :index
911
+ # * :name
912
+ # * :xpath
913
+ #
914
+ def element(tag, identifier={:index => 0})
915
+ element_for(tag, identifier.clone)
916
+ end
833
917
  end
834
918
  end