druid-ts 1.1.0 → 1.1.1

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