druid-ts 1.1.0 → 1.1.1

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.
@@ -1,2 +1,4 @@
1
1
  require 'watir-webdriver'
2
2
  require 'druid'
3
+
4
+ World(Druid::PageFactory)
@@ -35,5 +35,9 @@ module UrlHelper
35
35
  def async
36
36
  "#{files}/async.html"
37
37
  end
38
+
39
+ def multi
40
+ "#{files}/multi_elements.html"
41
+ end
38
42
  end
39
43
  end
data/lib/druid/assist.rb CHANGED
@@ -1,360 +1,401 @@
1
1
  module Druid
2
2
  module Assist
3
3
  def click_link_for identifier
4
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Link)
5
- driver.instance_eval "#{nested_frames(frame_identifiers)}link(identifier).click"
6
- switch_to_default_content(frame_identifiers)
4
+ process_call("link(identifier).click if identifier", Elements::Link, identifier)
7
5
  end
8
6
 
9
7
  def link_for identifier
10
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Link)
11
- element = driver.instance_eval "#{nested_frames(frame_identifiers)}link(identifier)"
12
- switch_to_default_content(frame_identifiers)
13
- Elements::Link.new element
8
+ find_element("link(identifier)", Elements::Link, identifier)
9
+ end
10
+
11
+ #
12
+ # retrieve all link elements
13
+ #
14
+ def links_for identifier
15
+ find_elements("links(identifier)", Elements::Link, identifier)
14
16
  end
15
17
 
16
18
  def text_field_for identifier
17
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::TextField)
18
- element = driver.instance_eval "#{nested_frames(frame_identifiers)}text_field(identifier)"
19
- switch_to_default_content(frame_identifiers)
20
- Elements::TextField.new element
19
+ find_element("text_field(identifier)", Elements::TextField, identifier)
20
+ end
21
+
22
+ #
23
+ # retrieve an array of hidden field elements
24
+ #
25
+ def text_fields_for(identifier)
26
+ find_elements("text_fields(identifier)", Elements::TextField, identifier)
21
27
  end
22
28
 
23
29
  def text_field_value_for identifier
24
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::TextField)
25
- value = driver.instance_eval "#{nested_frames(frame_identifiers)}text_field(identifier).value"
26
- switch_to_default_content(frame_identifiers)
27
- value
30
+ process_call("text_field(identifier).value", Elements::TextField, identifier)
28
31
  end
29
32
 
30
33
  def text_field_value_set identifier, value
31
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::TextField)
32
- driver.instance_eval "#{nested_frames(frame_identifiers)}text_field(identifier).set(value)"
33
- switch_to_default_content(frame_identifiers)
34
+ process_call("text_field(identifier).set(value)", Elements::TextField, identifier, value)
34
35
  end
35
36
 
36
37
  def check_checkbox identifier
37
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::CheckBox)
38
- driver.instance_eval "#{nested_frames(frame_identifiers)}checkbox(identifier).set"
39
- switch_to_default_content(frame_identifiers)
38
+ process_call("checkbox(identifier).set", Elements::CheckBox, identifier)
40
39
  end
41
40
 
42
41
  def uncheck_checkbox identifier
43
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::CheckBox)
44
- driver.instance_eval "#{nested_frames(frame_identifiers)}checkbox(identifier).clear"
45
- switch_to_default_content(frame_identifiers)
42
+ process_call("checkbox(identifier).clear", Elements::CheckBox, identifier)
46
43
  end
47
44
 
48
45
  def checkbox_checked? identifier
49
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::CheckBox)
50
- result = driver.instance_eval "#{nested_frames(frame_identifiers)}checkbox(identifier).set?"
51
- switch_to_default_content(frame_identifiers)
52
- result
46
+ process_call("checkbox(identifier).set?", Elements::CheckBox, identifier)
53
47
  end
54
48
 
55
49
  def checkbox_for identifier
56
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::CheckBox)
57
- element = driver.instance_eval "#{nested_frames(frame_identifiers)}checkbox(identifier)"
58
- switch_to_default_content(frame_identifiers)
59
- Elements::CheckBox.new element
50
+ find_element("checkbox(identifier)", Elements::CheckBox, identifier)
51
+ end
52
+
53
+ #
54
+ # retrieve an array of checkbox elements
55
+
56
+ def checkboxes_for identifier
57
+ find_elements("checkboxes(identifier)", Elements::CheckBox, identifier)
60
58
  end
61
59
 
62
60
  def select_list_value_set identifier, value
63
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::SelectList)
64
- driver.instance_eval "#{nested_frames(frame_identifiers)}select_list(identifier).select value"
65
- switch_to_default_content(frame_identifiers)
61
+ process_call("select_list(identifier).select(value)", Elements::SelectList, identifier, value)
66
62
  end
67
63
 
68
64
  def select_list_value_for identifier
69
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::SelectList)
70
- value = driver.instance_eval "#{nested_frames(frame_identifiers)}select_list(identifier).value"
71
- switch_to_default_content(frame_identifiers)
72
- value
65
+ process_call("select_list(identifier).value", Elements::SelectList, identifier)
73
66
  end
74
67
 
75
68
  def select_list_for identifier
76
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::SelectList)
77
- element = driver.instance_eval "#{nested_frames(frame_identifiers)}select_list(identifier)"
78
- switch_to_default_content(frame_identifiers)
79
- Elements::SelectList.new element
69
+ find_element("select_list(identifier)", Elements::SelectList, identifier)
70
+ end
71
+
72
+ #
73
+ # retrieve an array of select_list elements
74
+ #
75
+ def select_lists_for identifier
76
+ find_elements("select_lists(identifier)", Elements::SelectList, identifier)
80
77
  end
81
78
 
82
79
  def select_radio identifier
83
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::RadioButton)
84
- driver.instance_eval "#{nested_frames(frame_identifiers)}radio(identifier).set"
85
- switch_to_default_content(frame_identifiers)
80
+ process_call("radio(identifier).set", Elements::RadioButton, identifier)
86
81
  end
87
82
 
88
83
  def clear_radio identifier
89
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::RadioButton)
90
- driver.instance_eval "#{nested_frames(frame_identifiers)}radio(identifier).clear"
91
- switch_to_default_content(frame_identifiers)
84
+ process_call("radio(identifier).clear", Elements::RadioButton, identifier)
92
85
  end
93
86
 
94
87
  def radio_selected? identifier
95
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::RadioButton)
96
- result = driver.instance_eval "#{nested_frames(frame_identifiers)}radio(identifier).set?"
97
- switch_to_default_content(frame_identifiers)
98
- result
88
+ process_call("radio(identifier).set?", Elements::RadioButton, identifier)
99
89
  end
100
90
 
101
91
  def radio_button_for identifier
102
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::RadioButton)
103
- element = driver.instance_eval "#{nested_frames(frame_identifiers)}radio(identifier)"
104
- switch_to_default_content(frame_identifiers)
105
- Elements::RadioButton.new element
92
+ find_element("radio(identifier)", Elements::RadioButton, identifier)
93
+ end
94
+
95
+ #
96
+ # retrieve an array of radio button elements
97
+ def radio_buttons_for identifier
98
+ find_elements("radios(identifier)", Elements::RadioButton, identifier)
106
99
  end
107
100
 
108
101
  def click_button_for identifier
109
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Button)
110
- driver.instance_eval "#{nested_frames(frame_identifiers)}button(identifier).click"
111
- switch_to_default_content(frame_identifiers)
102
+ process_call("button(identifier).click", Elements::Button, identifier)
112
103
  end
113
104
 
114
105
  def button_for identifier
115
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Button)
116
- element = driver.instance_eval "#{nested_frames(frame_identifiers)}button(identifier)"
117
- switch_to_default_content(frame_identifiers)
118
- Elements::Button.new element
106
+ find_element("button(identifier)", Elements::Button, identifier)
107
+ end
108
+
109
+ #
110
+ # retrieve an array of button elements
111
+ #
112
+ def buttons_for(identifier)
113
+ find_elements("buttons(identifier)", Elements::Button, identifier)
119
114
  end
120
115
 
121
116
  def div_text_for identifier
122
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Div, 'div')
123
- text = driver.instance_eval "#{nested_frames(frame_identifiers)}div(identifier).text"
124
- switch_to_default_content(frame_identifiers)
125
- text
117
+ process_call("div(identifier).text", Elements::Div, identifier, nil, 'div')
126
118
  end
127
119
 
128
120
  def div_for identifier
129
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Div, 'div')
130
- element = driver.instance_eval "#{nested_frames(frame_identifiers)}div(identifier)"
131
- switch_to_default_content(frame_identifiers)
132
- Elements::Div.new element
121
+ find_element("div(identifier)", Elements::Div, identifier, 'div')
122
+ end
123
+
124
+ #
125
+ # retrieve an array of div elements
126
+ #
127
+ def divs_for identifier
128
+ find_elements("divs(identifier)", Elements::Div, identifier, 'div')
133
129
  end
134
130
 
135
131
  def table_for identifier
136
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Table, 'table')
137
- element = driver.instance_eval "#{nested_frames(frame_identifiers)}table(identifier)"
138
- switch_to_default_content(frame_identifiers)
139
- Elements::Table.new element
132
+ find_element("table(identifier)", Elements::Table, identifier, 'table')
133
+ end
134
+
135
+ #
136
+ # retrieve an array of table elements
137
+ #
138
+ def tables_for identifier
139
+ find_elements("tables(identifier)", Elements::Table, identifier, 'table')
140
140
  end
141
141
 
142
142
  def cell_text_for identifier
143
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::TableCell, 'td')
144
- text = driver.instance_eval "#{nested_frames(frame_identifiers)}td(identifier).text"
145
- switch_to_default_content(frame_identifiers)
146
- text
143
+ process_call("td(identifier).text", Elements::TableCell, identifier, nil, 'td')
147
144
  end
148
145
 
149
146
  def cell_for identifier
150
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::TableCell, 'td')
151
- element = driver.instance_eval "#{nested_frames(frame_identifiers)}td(identifier)"
152
- switch_to_default_content(frame_identifiers)
153
- Elements::TableCell.new element
147
+ find_element("td(identifier)", Elements::TableCell, identifier, 'td')
148
+ end
149
+
150
+ #
151
+ # retrieve an array of cell elements
152
+ #
153
+ def cells_for identifier
154
+ find_elements("tds(identifier)", Elements::TableCell, identifier, 'td')
154
155
  end
155
156
 
156
157
  def span_text_for identifier
157
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Span, 'span')
158
- text = driver.instance_eval "#{nested_frames(frame_identifiers)}span(identifier).text"
159
- switch_to_default_content(frame_identifiers)
160
- text
158
+ process_call("span(identifier).text", Elements::Span, identifier, nil, 'span')
161
159
  end
162
160
 
163
161
  def span_for identifier
164
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Span, 'span')
165
- element = driver.instance_eval "#{nested_frames(frame_identifiers)}span(identifier)"
166
- switch_to_default_content(frame_identifiers)
167
- Elements::Span.new element
162
+ find_element("span(identifier)", Elements::Span, identifier, 'span')
163
+ end
164
+
165
+ #
166
+ # retrieve an array of span elements
167
+ #
168
+ def spans_for identifier
169
+ find_elements("spans(identifier)", Elements::Span, identifier, 'span')
168
170
  end
169
171
 
170
172
  def image_for identifier
171
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Image)
172
- element = driver.instance_eval "#{nested_frames(frame_identifiers)}image(identifier)"
173
- switch_to_default_content(frame_identifiers)
174
- Elements::Image.new element
173
+ find_element("image(identifier)", Elements::Image, identifier)
174
+ end
175
+
176
+ #
177
+ # retrieve an array of image elements
178
+ #
179
+ def images_for identifier
180
+ find_elements("images(identifier)", Elements::Image, identifier)
175
181
  end
176
182
 
177
183
  def form_for identifier
178
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Form)
179
- element = driver.instance_eval "#{nested_frames(frame_identifiers)}form(identifier)"
180
- switch_to_default_content(frame_identifiers)
181
- Elements::Form.new element
184
+ find_element("form(identifier)", Elements::Form, identifier)
185
+ end
186
+
187
+ #
188
+ # retrieve an array of form elements
189
+ #
190
+ def forms_for identifier
191
+ find_elements("forms(identifier)", Elements::Form, identifier)
182
192
  end
183
193
 
184
194
  def hidden_field_value_for identifier
185
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::HiddenField)
186
- value = driver.instance_eval "#{nested_frames(frame_identifiers)}hidden(identifier).value"
187
- switch_to_default_content(frame_identifiers)
188
- value
195
+ process_call("hidden(identifier).value", Elements::HiddenField, identifier)
189
196
  end
190
197
 
191
198
  def hidden_field_for identifier
192
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::HiddenField)
193
- element = driver.instance_eval "#{nested_frames(frame_identifiers)}hidden(identifier)"
194
- switch_to_default_content(frame_identifiers)
195
- Elements::HiddenField.new element
199
+ find_element("hidden(identifier)", Elements::HiddenField, identifier)
200
+ end
201
+
202
+ #
203
+ # retrieve an array of hidden_field elements
204
+ #
205
+ def hidden_fields_for identifier
206
+ find_elements("hiddens(identifier)", Elements::HiddenField, identifier)
196
207
  end
197
208
 
198
209
  def list_item_text_for identifier
199
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::ListItem, 'li')
200
- text = driver.instance_eval "#{nested_frames(frame_identifiers)}li(identifier).text"
201
- switch_to_default_content(frame_identifiers)
202
- text
210
+ process_call("li(identifier).text", Elements::ListItem, identifier, nil, 'li')
203
211
  end
204
212
 
205
213
  def list_item_for identifier
206
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::ListItem, 'li')
207
- element = driver.instance_eval "#{nested_frames(frame_identifiers)}li(identifier)"
208
- switch_to_default_content(frame_identifiers)
209
- Elements::ListItem.new element
214
+ find_element("li(identifier)", Elements::ListItem, identifier, 'li')
215
+ end
216
+
217
+ #
218
+ # retrieve an array of list_item elements
219
+ #
220
+ def list_items_for identifier
221
+ find_elements("lis(identifier)", Elements::ListItem, identifier, 'li')
210
222
  end
211
223
 
212
224
  def ordered_list_for identifier
213
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::OrderedList, 'ol')
214
- element = driver.instance_eval "#{nested_frames(frame_identifiers)}ol(identifier)"
215
- switch_to_default_content(frame_identifiers)
216
- Elements::OrderedList.new element
225
+ find_element("ol(identifier)", Elements::OrderedList, identifier, 'ol')
226
+ end
227
+
228
+ #
229
+ # retrieve an array of ordered_list elements
230
+ #
231
+ def ordered_lists_for identifier
232
+ find_elements("ols(identifier)", Elements::OrderedList, identifier, 'ol')
217
233
  end
218
234
 
219
235
  def text_area_value_set identifier, value
220
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::TextArea)
221
- driver.instance_eval "#{nested_frames(frame_identifiers)}textarea(identifier).send_keys value"
222
- switch_to_default_content(frame_identifiers)
236
+ process_call("textarea(identifier).send_keys(value)", Elements::TextArea, identifier, value)
223
237
  end
224
238
 
225
239
  def text_area_value_for identifier
226
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::TextArea)
227
- value = driver.instance_eval "#{nested_frames(frame_identifiers)}textarea(identifier).value"
228
- switch_to_default_content(frame_identifiers)
229
- value
240
+ process_call("textarea(identifier).value", Elements::TextArea, identifier)
230
241
  end
231
242
 
232
243
  def text_area_for identifier
233
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::TextArea)
234
- element = driver.instance_eval "#{nested_frames(frame_identifiers)}textarea(identifier)"
235
- switch_to_default_content(frame_identifiers)
236
- Elements::TextArea.new element
244
+ find_element("textarea(identifier)", Elements::TextArea, identifier)
245
+ end
246
+ #
247
+ # retrieve an array of textarea elements
248
+ def text_areas_for identifier
249
+ find_elements("textareas(identifier)", Elements::TextArea, identifier)
237
250
  end
238
251
 
239
252
  def unordered_list_for identifier
240
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::UnOrderedList, 'ul')
241
- element = driver.instance_eval "#{nested_frames(frame_identifiers)}ul(identifier)"
242
- switch_to_default_content(frame_identifiers)
243
- Elements::UnOrderedList.new element
253
+ find_element("ul(identifier)", Elements::UnOrderedList, identifier, 'ul')
254
+ end
255
+
256
+ #
257
+ # retrieve an array of unordered_lists elements
258
+ #
259
+ def unordered_lists_for identifier
260
+ find_elements("uls(identifier)", Elements::UnOrderedList, identifier, 'ul')
244
261
  end
245
262
 
246
263
  def h1_text_for identifier
247
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Heading, 'h1')
248
- text = driver.instance_eval "#{nested_frames(frame_identifiers)}h1(identifier).text"
249
- switch_to_default_content(frame_identifiers)
250
- text
264
+ process_call("h1(identifier).text", Elements::Heading, identifier, nil, 'h1')
251
265
  end
252
266
 
253
267
  def h1_for identifier
254
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Heading, 'h1')
255
- element = driver.instance_eval "#{nested_frames(frame_identifiers)}h1(identifier)"
256
- switch_to_default_content(frame_identifiers)
257
- Elements::Heading.new element
268
+ find_element("h1(identifier)", Elements::Heading, identifier, 'h1')
269
+ end
270
+
271
+ #
272
+ # retrieve an array of h1 elements
273
+ #
274
+ def h1s_for identifier
275
+ find_elements("h1s(identifier)", Elements::Heading, identifier, 'h1')
258
276
  end
259
277
 
260
278
  def h2_text_for identifier
261
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Heading, 'h2')
262
- text = driver.instance_eval "#{nested_frames(frame_identifiers)}h2(identifier).text"
263
- switch_to_default_content(frame_identifiers)
264
- text
279
+ process_call("h2(identifier).text", Elements::Heading, identifier, nil, 'h2')
265
280
  end
266
281
 
267
282
  def h2_for identifier
268
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Heading, 'h2')
269
- element = driver.instance_eval "#{nested_frames(frame_identifiers)}h2(identifier)"
270
- switch_to_default_content(frame_identifiers)
271
- Elements::Heading.new element
283
+ find_element("h2(identifier)", Elements::Heading, identifier, 'h2')
284
+ end
285
+
286
+ #
287
+ # retrieve an array of h2 elements
288
+ #
289
+ def h2s_for identifier
290
+ find_elements("h2s(identifier)", Elements::Heading, identifier, 'h2')
272
291
  end
273
292
 
274
293
  def h3_text_for identifier
275
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Heading, 'h3')
276
- text = driver.instance_eval "#{nested_frames(frame_identifiers)}h3(identifier).text"
277
- switch_to_default_content(frame_identifiers)
278
- text
294
+ process_call("h3(identifier).text", Elements::Heading, identifier, nil, 'h3')
279
295
  end
280
296
 
281
297
  def h3_for identifier
282
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Heading, 'h3')
283
- element = driver.instance_eval "#{nested_frames(frame_identifiers)}h3(identifier)"
284
- switch_to_default_content(frame_identifiers)
285
- Elements::Heading.new element
298
+ find_element("h3(identifier)", Elements::Heading, identifier, 'h3')
299
+ end
300
+
301
+ #
302
+ # retrieve an array of h3 elements
303
+ #
304
+ def h3s_for identifier
305
+ find_elements("h3s(identifier)", Elements::Heading, identifier, 'h3')
286
306
  end
287
307
 
288
308
  def h4_text_for identifier
289
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Heading, 'h4')
290
- text = driver.instance_eval "#{nested_frames(frame_identifiers)}h4(identifier).text"
291
- switch_to_default_content(frame_identifiers)
292
- text
309
+ process_call("h4(identifier).text", Elements::Heading, identifier, nil, 'h4')
293
310
  end
294
311
 
295
312
  def h4_for identifier
296
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Heading, 'h4')
297
- element = driver.instance_eval "#{nested_frames(frame_identifiers)}h4(identifier)"
298
- switch_to_default_content(frame_identifiers)
299
- Elements::Heading.new element
313
+ find_element("h4(identifier)", Elements::Heading, identifier, 'h4')
314
+ end
315
+
316
+ #
317
+ # retrieve an array of h4 elements
318
+ #
319
+ def h4s_for identifier
320
+ find_elements("h4s(identifier)", Elements::Heading, identifier, 'h4')
300
321
  end
301
322
 
302
323
  def h5_text_for identifier
303
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Heading, 'h5')
304
- text = driver.instance_eval "#{nested_frames(frame_identifiers)}h5(identifier).text"
305
- switch_to_default_content(frame_identifiers)
306
- text
324
+ process_call("h5(identifier).text", Elements::Heading, identifier, nil, 'h5')
307
325
  end
308
326
 
309
327
  def h5_for identifier
310
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Heading, 'h5')
311
- element = driver.instance_eval "#{nested_frames(frame_identifiers)}h5(identifier)"
312
- switch_to_default_content(frame_identifiers)
313
- Elements::Heading.new element
328
+ find_element("h5(identifier)", Elements::Heading, identifier, 'h5')
329
+ end
330
+
331
+ #
332
+ # retrieve an array of h5 elements
333
+ #
334
+ def h5s_for identifier
335
+ find_elements("h5s(identifier)", Elements::Heading, identifier, 'h5')
314
336
  end
315
337
 
316
338
  def h6_text_for identifier
317
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Heading, 'h6')
318
- text = driver.instance_eval "#{nested_frames(frame_identifiers)}h6(identifier).text"
319
- switch_to_default_content(frame_identifiers)
320
- text
339
+ process_call("h6(identifier).text", Elements::Heading, identifier, nil, 'h6')
321
340
  end
322
341
 
323
342
  def h6_for identifier
324
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Heading, 'h6')
325
- element = driver.instance_eval "#{nested_frames(frame_identifiers)}h6(identifier)"
326
- switch_to_default_content(frame_identifiers)
327
- Elements::Heading.new element
343
+ find_element("h6(identifier)", Elements::Heading, identifier, 'h6')
344
+ end
345
+
346
+ #
347
+ # retrieve an array of h6 elements
348
+ #
349
+ def h6s_for identifier
350
+ find_elements("h6s(identifier)", Elements::Heading, identifier, 'h6')
328
351
  end
329
352
 
330
353
  def paragraph_text_for identifier
331
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Paragraph, 'p')
332
- text = driver.instance_eval "#{nested_frames(frame_identifiers)}p(identifier).text"
333
- switch_to_default_content(frame_identifiers)
334
- text
354
+ process_call("p(identifier).text", Elements::Paragraph, identifier, nil, 'p')
335
355
  end
336
356
 
337
357
  def paragraph_for identifier
338
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Paragraph, 'p')
339
- element = driver.instance_eval "#{nested_frames(frame_identifiers)}p(identifier)"
340
- switch_to_default_content(frame_identifiers)
341
- Elements::Paragraph.new element
358
+ find_element("p(identifier)", Elements::Paragraph, identifier, 'p')
359
+ end
360
+
361
+ #
362
+ # retrieve an array of paragraph Elements
363
+ #
364
+ def paragraphs_for identifier
365
+ find_elements("ps(identifier)", Elements::Paragraph, identifier, 'p')
342
366
  end
343
367
 
344
368
  def file_field_value_set identifier, value
345
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::FileField)
346
- driver.instance_eval "#{nested_frames(frame_identifiers)}file_field(identifier).set(value)"
347
- switch_to_default_content(frame_identifiers)
369
+ process_call("file_field(identifier).set(value)", Elements::FileField, identifier, value)
348
370
  end
349
371
 
350
372
  def file_field_for identifier
351
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::FileField)
352
- element = driver.instance_eval "#{nested_frames(frame_identifiers)}file_field(identifier)"
353
- switch_to_default_content(frame_identifiers)
354
- Elements::FileField.new element
373
+ find_element("file_field(identifier)", Elements::FileField, identifier)
355
374
  end
375
+
356
376
  private
357
377
 
378
+ def find_elements(the_call, type, identifier, tag_name=nil)
379
+ identifier, frame_identifiers = parse_identifiers(identifier, type, tag_name)
380
+ elements = driver.instance_eval "#{nested_frames(frame_identifiers)}#{the_call}"
381
+ switch_to_default_content(frame_identifiers)
382
+ elements.map { |element| type.new(element) }
383
+ end
384
+
385
+ def find_element(the_call, type, identifier, tag_name=nil)
386
+ identifier, frame_identifiers = parse_identifiers(identifier, type, tag_name)
387
+ element = driver.instance_eval "#{nested_frames(frame_identifiers)}#{the_call}"
388
+ switch_to_default_content(frame_identifiers)
389
+ type.new(element)
390
+ end
391
+
392
+ def process_call(the_call, type, identifier, value=nil, tag_name=nil)
393
+ identifier, frame_identifiers = parse_identifiers(identifier, type, tag_name)
394
+ value = driver.instance_eval "#{nested_frames(frame_identifiers)}#{the_call}"
395
+ switch_to_default_content(frame_identifiers)
396
+ value
397
+ end
398
+
358
399
  def add_tagname_if_needed identifier, tag
359
400
  return identifier if identifier.length < 2 and not identifier[:name]
360
401
  identifier[:tag_name] = tag if identifier[:name]