page-object 0.2.2 → 0.2.3
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +10 -0
- data/features/html/static_elements.html +1 -2
- data/features/step_definitions/accessor_steps.rb +16 -16
- data/features/step_definitions/element_steps.rb +15 -16
- data/features/support/page.rb +1 -0
- data/features/table_cell.feature +1 -0
- data/lib/page-object.rb +15 -3
- data/lib/page-object/accessors.rb +87 -52
- data/lib/page-object/elements/element.rb +11 -0
- data/lib/page-object/elements/table_cell.rb +10 -0
- data/lib/page-object/platforms/selenium/page_object.rb +44 -108
- data/lib/page-object/platforms/watir/page_object.rb +43 -83
- data/lib/page-object/version.rb +1 -1
- data/page-object.gemspec +1 -1
- data/spec/page-object/accessors_spec.rb +91 -68
- data/spec/page-object/elements/element_spec.rb +7 -0
- data/spec/page-object/page-object_spec.rb +26 -0
- metadata +3 -3
@@ -41,6 +41,17 @@ module PageObject
|
|
41
41
|
return how, what
|
42
42
|
end
|
43
43
|
end
|
44
|
+
|
45
|
+
# @private
|
46
|
+
# delegate calls to driver element
|
47
|
+
def method_missing(*args, &block)
|
48
|
+
m = args.shift
|
49
|
+
begin
|
50
|
+
element.send m, *args, &block
|
51
|
+
rescue Exception => e
|
52
|
+
raise
|
53
|
+
end
|
54
|
+
end
|
44
55
|
|
45
56
|
protected
|
46
57
|
|
@@ -118,9 +118,7 @@ module PageObject
|
|
118
118
|
# See PageObject::Accessors#text_field
|
119
119
|
#
|
120
120
|
def text_field_value_for(identifier)
|
121
|
-
frame_identifiers = identifier
|
122
|
-
identifier = add_tagname_if_needed identifier, 'input', :type => 'text'
|
123
|
-
how, what = Elements::TextField.selenium_identifier_for identifier
|
121
|
+
how, what, frame_identifiers = parse_identifiers(identifier, Elements::TextField, 'input', :type => 'text')
|
124
122
|
switch_to_frame(frame_identifiers)
|
125
123
|
text = @browser.find_element(how, what).attribute('value')
|
126
124
|
@browser.switch_to.default_content
|
@@ -132,9 +130,7 @@ module PageObject
|
|
132
130
|
# See PageObject::Accessors#text_field
|
133
131
|
#
|
134
132
|
def text_field_value_set(identifier, value)
|
135
|
-
frame_identifiers = identifier
|
136
|
-
identifier = add_tagname_if_needed identifier, 'input', :type => 'text'
|
137
|
-
how, what = Elements::TextField.selenium_identifier_for identifier
|
133
|
+
how, what, frame_identifiers = parse_identifiers(identifier, Elements::TextField, 'input', :type => 'text')
|
138
134
|
switch_to_frame(frame_identifiers)
|
139
135
|
@browser.find_element(how, what).clear
|
140
136
|
@browser.find_element(how, what).send_keys(value)
|
@@ -146,9 +142,7 @@ module PageObject
|
|
146
142
|
# See PageObject::Accessors#text_field
|
147
143
|
#
|
148
144
|
def text_field_for(identifier)
|
149
|
-
frame_identifiers = identifier
|
150
|
-
identifier = add_tagname_if_needed identifier, 'input', :type => 'text'
|
151
|
-
how, what = Elements::TextField.selenium_identifier_for identifier
|
145
|
+
how, what, frame_identifiers = parse_identifiers(identifier, Elements::TextField, 'input', :type => 'text')
|
152
146
|
switch_to_frame(frame_identifiers)
|
153
147
|
element = @browser.find_element(how, what)
|
154
148
|
@browser.switch_to.default_content
|
@@ -160,9 +154,7 @@ module PageObject
|
|
160
154
|
# See PageObject::Accessors#hidden_field
|
161
155
|
#
|
162
156
|
def hidden_field_value_for(identifier)
|
163
|
-
frame_identifiers = identifier
|
164
|
-
identifier = add_tagname_if_needed identifier, 'input', :type => 'hidden'
|
165
|
-
how, what = Elements::HiddenField.selenium_identifier_for identifier
|
157
|
+
how, what, frame_identifiers = parse_identifiers(identifier, Elements::HiddenField, 'input', :type => 'hidden')
|
166
158
|
switch_to_frame(frame_identifiers)
|
167
159
|
value = @browser.find_element(how, what).attribute('value')
|
168
160
|
@browser.switch_to.default_content
|
@@ -174,9 +166,7 @@ module PageObject
|
|
174
166
|
# See PageObject::Accessors#hidden_field
|
175
167
|
#
|
176
168
|
def hidden_field_for(identifier)
|
177
|
-
frame_identifiers = identifier
|
178
|
-
identifier = add_tagname_if_needed identifier, 'input', :type => 'hidden'
|
179
|
-
how, what = Elements::HiddenField.selenium_identifier_for identifier
|
169
|
+
how, what, frame_identifiers = parse_identifiers(identifier, Elements::HiddenField, 'input', :type => 'hidden')
|
180
170
|
switch_to_frame(frame_identifiers)
|
181
171
|
element = @browser.find_element(how, what)
|
182
172
|
@browser.switch_to.default_content
|
@@ -188,9 +178,7 @@ module PageObject
|
|
188
178
|
# See PageObject::Accessors#text_area
|
189
179
|
#
|
190
180
|
def text_area_value_set(identifier, value)
|
191
|
-
frame_identifiers = identifier
|
192
|
-
identifier = add_tagname_if_needed identifier, 'textarea'
|
193
|
-
how, what = Elements::TextArea.selenium_identifier_for identifier
|
181
|
+
how, what, frame_identifiers = parse_identifiers(identifier, Elements::TextArea, 'textarea')
|
194
182
|
switch_to_frame(frame_identifiers)
|
195
183
|
@browser.find_element(how, what).send_keys(value)
|
196
184
|
@browser.switch_to.default_content
|
@@ -201,9 +189,7 @@ module PageObject
|
|
201
189
|
# See PageObject::Accessors#text_area
|
202
190
|
#
|
203
191
|
def text_area_value_for(identifier)
|
204
|
-
frame_identifiers = identifier
|
205
|
-
identifier = add_tagname_if_needed identifier, 'textarea'
|
206
|
-
how, what = Elements::TextArea.selenium_identifier_for identifier
|
192
|
+
how, what, frame_identifiers = parse_identifiers(identifier, Elements::TextArea, 'textarea')
|
207
193
|
switch_to_frame(frame_identifiers)
|
208
194
|
value = @browser.find_element(how, what).attribute('value')
|
209
195
|
@browser.switch_to.default_content
|
@@ -215,9 +201,7 @@ module PageObject
|
|
215
201
|
# See PageObject::Accessors#text_area
|
216
202
|
#
|
217
203
|
def text_area_for(identifier)
|
218
|
-
frame_identifiers = identifier
|
219
|
-
identifier = add_tagname_if_needed identifier, 'textarea'
|
220
|
-
how, what = Elements::TextArea.selenium_identifier_for identifier
|
204
|
+
how, what, frame_identifiers = parse_identifiers(identifier, Elements::TextArea, 'textarea')
|
221
205
|
switch_to_frame(frame_identifiers)
|
222
206
|
element = @browser.find_element(how, what)
|
223
207
|
@browser.switch_to.default_content
|
@@ -229,9 +213,7 @@ module PageObject
|
|
229
213
|
# See PageObject::Accessors#select_list
|
230
214
|
#
|
231
215
|
def select_list_value_for(identifier)
|
232
|
-
frame_identifiers = identifier
|
233
|
-
identifier = add_tagname_if_needed identifier, 'select'
|
234
|
-
how, what = Elements::SelectList.selenium_identifier_for identifier
|
216
|
+
how, what, frame_identifiers = parse_identifiers(identifier, Elements::SelectList, 'select')
|
235
217
|
switch_to_frame(frame_identifiers)
|
236
218
|
value = @browser.find_element(how, what).attribute('value')
|
237
219
|
@browser.switch_to.default_content
|
@@ -243,9 +225,7 @@ module PageObject
|
|
243
225
|
# See PageObject::Accessors#select_list
|
244
226
|
#
|
245
227
|
def select_list_value_set(identifier, value)
|
246
|
-
frame_identifiers = identifier
|
247
|
-
identifier = add_tagname_if_needed identifier, 'select'
|
248
|
-
how, what = Elements::SelectList.selenium_identifier_for identifier
|
228
|
+
how, what, frame_identifiers = parse_identifiers(identifier, Elements::SelectList, 'select')
|
249
229
|
switch_to_frame(frame_identifiers)
|
250
230
|
@browser.find_element(how, what).send_keys(value)
|
251
231
|
@browser.switch_to.default_content
|
@@ -256,9 +236,7 @@ module PageObject
|
|
256
236
|
# See PageObject::Accessors#select_list
|
257
237
|
#
|
258
238
|
def select_list_for(identifier)
|
259
|
-
frame_identifiers = identifier
|
260
|
-
identifier = add_tagname_if_needed identifier, 'select'
|
261
|
-
how, what = Elements::SelectList.selenium_identifier_for identifier
|
239
|
+
how, what, frame_identifiers = parse_identifiers(identifier, Elements::SelectList, 'select')
|
262
240
|
switch_to_frame(frame_identifiers)
|
263
241
|
element = @browser.find_element(how, what)
|
264
242
|
@browser.switch_to.default_content
|
@@ -270,9 +248,7 @@ module PageObject
|
|
270
248
|
# See PageObject::Accessors#link
|
271
249
|
#
|
272
250
|
def click_link_for(identifier)
|
273
|
-
frame_identifiers = identifier
|
274
|
-
identifier = add_tagname_if_needed identifier, "a"
|
275
|
-
how, what = Elements::Link.selenium_identifier_for identifier
|
251
|
+
how, what, frame_identifiers = parse_identifiers(identifier, Elements::Link, 'a')
|
276
252
|
switch_to_frame frame_identifiers
|
277
253
|
@browser.find_element(how, what).click
|
278
254
|
@browser.switch_to.default_content
|
@@ -283,9 +259,7 @@ module PageObject
|
|
283
259
|
# see PageObject::Accessors#link
|
284
260
|
#
|
285
261
|
def link_for(identifier)
|
286
|
-
frame_identifiers = identifier
|
287
|
-
identifier = add_tagname_if_needed identifier, "a"
|
288
|
-
how, what = Elements::Link.selenium_identifier_for identifier
|
262
|
+
how, what, frame_identifiers = parse_identifiers(identifier, Elements::Link, 'a')
|
289
263
|
switch_to_frame(frame_identifiers)
|
290
264
|
element = @browser.find_element(how, what)
|
291
265
|
@browser.switch_to.default_content
|
@@ -297,9 +271,7 @@ module PageObject
|
|
297
271
|
# See PageObject::Accessors#checkbox
|
298
272
|
#
|
299
273
|
def check_checkbox(identifier)
|
300
|
-
frame_identifiers = identifier
|
301
|
-
identifier = add_tagname_if_needed identifier, 'input', :type => 'checkbox'
|
302
|
-
how, what = Elements::CheckBox.selenium_identifier_for identifier
|
274
|
+
how, what, frame_identifiers = parse_identifiers(identifier, Elements::CheckBox, 'input', :type => 'checkbox')
|
303
275
|
switch_to_frame(frame_identifiers)
|
304
276
|
@browser.find_element(how, what).click unless @browser.find_element(how, what).selected?
|
305
277
|
@browser.switch_to.default_content
|
@@ -310,9 +282,7 @@ module PageObject
|
|
310
282
|
# See PageObject::Accessors#checkbox
|
311
283
|
#
|
312
284
|
def uncheck_checkbox(identifier)
|
313
|
-
frame_identifiers = identifier
|
314
|
-
identifier = add_tagname_if_needed identifier, 'input', :type => 'checkbox'
|
315
|
-
how, what = Elements::CheckBox.selenium_identifier_for identifier
|
285
|
+
how, what, frame_identifiers = parse_identifiers(identifier, Elements::CheckBox, 'input', :type => 'checkbox')
|
316
286
|
switch_to_frame(frame_identifiers)
|
317
287
|
@browser.find_element(how, what).click if @browser.find_element(how, what).selected?
|
318
288
|
@browser.switch_to.default_content
|
@@ -323,9 +293,7 @@ module PageObject
|
|
323
293
|
# See PageObject::Accessors#checkbox
|
324
294
|
#
|
325
295
|
def checkbox_checked?(identifier)
|
326
|
-
frame_identifiers = identifier
|
327
|
-
identifier = add_tagname_if_needed identifier, 'input', :type => 'checkbox'
|
328
|
-
how, what = Elements::CheckBox.selenium_identifier_for identifier
|
296
|
+
how, what, frame_identifiers = parse_identifiers(identifier, Elements::CheckBox, 'input', :type => 'checkbox')
|
329
297
|
switch_to_frame(frame_identifiers)
|
330
298
|
value = @browser.find_element(how, what).selected?
|
331
299
|
@browser.switch_to.default_content
|
@@ -337,9 +305,7 @@ module PageObject
|
|
337
305
|
# See PageObject::Accessors#checkbox
|
338
306
|
#
|
339
307
|
def checkbox_for(identifier)
|
340
|
-
frame_identifiers = identifier
|
341
|
-
identifier = add_tagname_if_needed identifier, 'input', :type => 'checkbox'
|
342
|
-
how, what = Elements::CheckBox.selenium_identifier_for identifier
|
308
|
+
how, what, frame_identifiers = parse_identifiers(identifier, Elements::CheckBox, 'input', :type => 'checkbox')
|
343
309
|
switch_to_frame(frame_identifiers)
|
344
310
|
element = @browser.find_element(how, what)
|
345
311
|
@browser.switch_to.default_content
|
@@ -351,9 +317,7 @@ module PageObject
|
|
351
317
|
# See PageObject::Accessors#radio_button
|
352
318
|
#
|
353
319
|
def select_radio(identifier)
|
354
|
-
frame_identifiers = identifier
|
355
|
-
identifier = add_tagname_if_needed identifier, 'input', :type => 'radio'
|
356
|
-
how, what = Elements::RadioButton.selenium_identifier_for identifier
|
320
|
+
how, what, frame_identifiers = parse_identifiers(identifier, Elements::RadioButton, 'input', :type => 'radio')
|
357
321
|
switch_to_frame(frame_identifiers)
|
358
322
|
@browser.find_element(how, what).click unless @browser.find_element(how, what).selected?
|
359
323
|
@browser.switch_to.default_content
|
@@ -364,9 +328,7 @@ module PageObject
|
|
364
328
|
# See PageObject::Accessors#radio_button
|
365
329
|
#
|
366
330
|
def clear_radio(identifier)
|
367
|
-
frame_identifiers = identifier
|
368
|
-
identifier = add_tagname_if_needed identifier, 'input', :type => 'radio'
|
369
|
-
how, what = Elements::RadioButton.selenium_identifier_for identifier
|
331
|
+
how, what, frame_identifiers = parse_identifiers(identifier, Elements::RadioButton, 'input', :type => 'radio')
|
370
332
|
switch_to_frame(frame_identifiers)
|
371
333
|
@browser.find_element(how, what).click if @browser.find_element(how, what).selected?
|
372
334
|
@browser.switch_to.default_content
|
@@ -377,9 +339,7 @@ module PageObject
|
|
377
339
|
# See PageObject::Accessors#radio_button
|
378
340
|
#
|
379
341
|
def radio_selected?(identifier)
|
380
|
-
frame_identifiers = identifier
|
381
|
-
identifier = add_tagname_if_needed identifier, 'input', :type => 'radio'
|
382
|
-
how, what = Elements::RadioButton.selenium_identifier_for identifier
|
342
|
+
how, what, frame_identifiers = parse_identifiers(identifier, Elements::RadioButton, 'input', :type => 'radio')
|
383
343
|
switch_to_frame(frame_identifiers)
|
384
344
|
value = @browser.find_element(how, what).selected?
|
385
345
|
@browser.switch_to.default_content
|
@@ -391,9 +351,7 @@ module PageObject
|
|
391
351
|
# See PageObject::Accessors#radio_button
|
392
352
|
#
|
393
353
|
def radio_button_for(identifier)
|
394
|
-
frame_identifiers = identifier
|
395
|
-
identifier = add_tagname_if_needed identifier, 'input', :type => 'radio'
|
396
|
-
how, what = Elements::RadioButton.selenium_identifier_for identifier
|
354
|
+
how, what, frame_identifiers = parse_identifiers(identifier, Elements::RadioButton, 'input', :type => 'radio')
|
397
355
|
switch_to_frame(frame_identifiers)
|
398
356
|
element = @browser.find_element(how, what)
|
399
357
|
@browser.switch_to.default_content
|
@@ -405,9 +363,7 @@ module PageObject
|
|
405
363
|
# See PageObject::Accessors#div
|
406
364
|
#
|
407
365
|
def div_text_for(identifier)
|
408
|
-
frame_identifiers = identifier
|
409
|
-
identifier = add_tagname_if_needed identifier, 'div'
|
410
|
-
how, what = Elements::Div.selenium_identifier_for identifier
|
366
|
+
how, what, frame_identifiers = parse_identifiers(identifier, Elements::Div, 'div')
|
411
367
|
switch_to_frame(frame_identifiers)
|
412
368
|
value = @browser.find_element(how, what).text
|
413
369
|
@browser.switch_to.default_content
|
@@ -419,9 +375,7 @@ module PageObject
|
|
419
375
|
# See PageObject::Accessors#div
|
420
376
|
#
|
421
377
|
def div_for(identifier)
|
422
|
-
frame_identifiers = identifier
|
423
|
-
identifier = add_tagname_if_needed identifier, 'div'
|
424
|
-
how, what = Elements::Div.selenium_identifier_for identifier
|
378
|
+
how, what, frame_identifiers = parse_identifiers(identifier, Elements::Div, 'div')
|
425
379
|
switch_to_frame(frame_identifiers)
|
426
380
|
element = @browser.find_element(how, what)
|
427
381
|
@browser.switch_to.default_content
|
@@ -433,9 +387,7 @@ module PageObject
|
|
433
387
|
# See PageObject::Accessors#span
|
434
388
|
#
|
435
389
|
def span_text_for(identifier)
|
436
|
-
frame_identifiers = identifier
|
437
|
-
identifier = add_tagname_if_needed identifier, 'span'
|
438
|
-
how, what = Elements::Span.selenium_identifier_for identifier
|
390
|
+
how, what, frame_identifiers = parse_identifiers(identifier, Elements::Span, 'span')
|
439
391
|
switch_to_frame(frame_identifiers)
|
440
392
|
value = @browser.find_element(how, what).text
|
441
393
|
@browser.switch_to.default_content
|
@@ -447,9 +399,7 @@ module PageObject
|
|
447
399
|
# See PageObject::Accessors#span
|
448
400
|
#
|
449
401
|
def span_for(identifier)
|
450
|
-
frame_identifiers = identifier
|
451
|
-
identifier = add_tagname_if_needed identifier, 'span'
|
452
|
-
how, what = Elements::Span.selenium_identifier_for identifier
|
402
|
+
how, what, frame_identifiers = parse_identifiers(identifier, Elements::Span, 'span')
|
453
403
|
switch_to_frame(frame_identifiers)
|
454
404
|
element = @browser.find_element(how, what)
|
455
405
|
@browser.switch_to.default_content
|
@@ -461,9 +411,7 @@ module PageObject
|
|
461
411
|
# See PageObject::Accessors#button
|
462
412
|
#
|
463
413
|
def click_button_for(identifier)
|
464
|
-
frame_identifiers = identifier
|
465
|
-
identifier = add_tagname_if_needed identifier, 'input', :type => 'submit'
|
466
|
-
how, what = Elements::Button.selenium_identifier_for identifier
|
414
|
+
how, what, frame_identifiers = parse_identifiers(identifier, Elements::Button, 'input', :type => 'submit')
|
467
415
|
switch_to_frame(frame_identifiers)
|
468
416
|
@browser.find_element(how, what).click
|
469
417
|
@browser.switch_to.default_content
|
@@ -474,9 +422,7 @@ module PageObject
|
|
474
422
|
# See PageObject::Accessors#button
|
475
423
|
#
|
476
424
|
def button_for(identifier)
|
477
|
-
frame_identifiers = identifier
|
478
|
-
identifier = add_tagname_if_needed identifier, 'input', :type => 'submit'
|
479
|
-
how, what = Elements::Button.selenium_identifier_for identifier
|
425
|
+
how, what, frame_identifiers = parse_identifiers(identifier, Elements::Button, 'input', :type => 'submit')
|
480
426
|
switch_to_frame(frame_identifiers)
|
481
427
|
element = @browser.find_element(how, what)
|
482
428
|
@browser.switch_to.default_content
|
@@ -488,9 +434,7 @@ module PageObject
|
|
488
434
|
# See PageObject::Accessors#table
|
489
435
|
#
|
490
436
|
def table_for(identifier)
|
491
|
-
frame_identifiers = identifier
|
492
|
-
identifier = add_tagname_if_needed identifier, 'table'
|
493
|
-
how, what = Elements::Table.selenium_identifier_for identifier
|
437
|
+
how, what, frame_identifiers = parse_identifiers(identifier, Elements::Table, 'table')
|
494
438
|
switch_to_frame(frame_identifiers)
|
495
439
|
element = @browser.find_element(how, what)
|
496
440
|
@browser.switch_to.default_content
|
@@ -502,9 +446,7 @@ module PageObject
|
|
502
446
|
# See PageObject::Accessors#cell
|
503
447
|
#
|
504
448
|
def cell_text_for(identifier)
|
505
|
-
frame_identifiers = identifier
|
506
|
-
identifier = add_tagname_if_needed identifier, 'td'
|
507
|
-
how, what = Elements::TableCell.selenium_identifier_for identifier
|
449
|
+
how, what, frame_identifiers = parse_identifiers(identifier, Elements::TableCell, 'td')
|
508
450
|
switch_to_frame(frame_identifiers)
|
509
451
|
value = @browser.find_element(how, what).text
|
510
452
|
@browser.switch_to.default_content
|
@@ -516,9 +458,7 @@ module PageObject
|
|
516
458
|
# See PageObject::Accessors#cell
|
517
459
|
#
|
518
460
|
def cell_for(identifier)
|
519
|
-
frame_identifiers = identifier
|
520
|
-
identifier = add_tagname_if_needed identifier, 'td'
|
521
|
-
how, what = Elements::TableCell.selenium_identifier_for identifier
|
461
|
+
how, what, frame_identifiers = parse_identifiers(identifier, Elements::TableCell, 'td')
|
522
462
|
switch_to_frame(frame_identifiers)
|
523
463
|
element = @browser.find_element(how, what)
|
524
464
|
@browser.switch_to.default_content
|
@@ -530,9 +470,7 @@ module PageObject
|
|
530
470
|
# See PageObject::Accessors#image
|
531
471
|
#
|
532
472
|
def image_for(identifier)
|
533
|
-
frame_identifiers = identifier
|
534
|
-
identifier = add_tagname_if_needed identifier, 'img'
|
535
|
-
how, what = Elements::Image.selenium_identifier_for identifier
|
473
|
+
how, what, frame_identifiers = parse_identifiers(identifier, Elements::Image, 'img')
|
536
474
|
switch_to_frame(frame_identifiers)
|
537
475
|
element = @browser.find_element(how, what)
|
538
476
|
@browser.switch_to.default_content
|
@@ -544,9 +482,7 @@ module PageObject
|
|
544
482
|
# See PageObject::Accessors#form
|
545
483
|
#
|
546
484
|
def form_for(identifier)
|
547
|
-
frame_identifiers = identifier
|
548
|
-
identifier = add_tagname_if_needed identifier, 'form'
|
549
|
-
how, what = Elements::Form.selenium_identifier_for identifier
|
485
|
+
how, what, frame_identifiers = parse_identifiers(identifier, Elements::Form, 'form')
|
550
486
|
switch_to_frame(frame_identifiers)
|
551
487
|
element = @browser.find_element(how, what)
|
552
488
|
@browser.switch_to.default_content
|
@@ -558,9 +494,7 @@ module PageObject
|
|
558
494
|
# See PageObject::Accessors#list_item
|
559
495
|
#
|
560
496
|
def list_item_text_for(identifier)
|
561
|
-
frame_identifiers = identifier
|
562
|
-
identifier = add_tagname_if_needed identifier, 'li'
|
563
|
-
how, what = Elements::ListItem.selenium_identifier_for identifier
|
497
|
+
how, what, frame_identifiers = parse_identifiers(identifier, Elements::ListItem, 'li')
|
564
498
|
switch_to_frame(frame_identifiers)
|
565
499
|
value = @browser.find_element(how, what).text
|
566
500
|
@browser.switch_to.default_content
|
@@ -572,9 +506,7 @@ module PageObject
|
|
572
506
|
# See PageObject::Accessors#list_item
|
573
507
|
#
|
574
508
|
def list_item_for(identifier)
|
575
|
-
frame_identifiers = identifier
|
576
|
-
identifier = add_tagname_if_needed identifier, 'li'
|
577
|
-
how, what = Elements::ListItem.selenium_identifier_for identifier
|
509
|
+
how, what, frame_identifiers = parse_identifiers(identifier, Elements::ListItem, 'li')
|
578
510
|
switch_to_frame(frame_identifiers)
|
579
511
|
element = @browser.find_element(how, what)
|
580
512
|
@browser.switch_to.default_content
|
@@ -586,9 +518,7 @@ module PageObject
|
|
586
518
|
# See PageObject::Accessors#unordered_list
|
587
519
|
#
|
588
520
|
def unordered_list_for(identifier)
|
589
|
-
frame_identifiers = identifier
|
590
|
-
identifier = add_tagname_if_needed identifier, 'ul'
|
591
|
-
how, what = Elements::UnorderedList.selenium_identifier_for identifier
|
521
|
+
how, what, frame_identifiers = parse_identifiers(identifier, Elements::UnorderedList, 'ul')
|
592
522
|
switch_to_frame(frame_identifiers)
|
593
523
|
element = @browser.find_element(how, what)
|
594
524
|
@browser.switch_to.default_content
|
@@ -600,9 +530,7 @@ module PageObject
|
|
600
530
|
# See PageObject::Accessors#ordered_list
|
601
531
|
#
|
602
532
|
def ordered_list_for(identifier)
|
603
|
-
frame_identifiers = identifier
|
604
|
-
identifier = add_tagname_if_needed identifier, 'ol'
|
605
|
-
how, what = Elements::OrderedList.selenium_identifier_for identifier
|
533
|
+
how, what, frame_identifiers = parse_identifiers(identifier, Elements::OrderedList, 'ol')
|
606
534
|
switch_to_frame(frame_identifiers)
|
607
535
|
element = @browser.find_element(how, what)
|
608
536
|
@browser.switch_to.default_content
|
@@ -610,6 +538,13 @@ module PageObject
|
|
610
538
|
end
|
611
539
|
|
612
540
|
private
|
541
|
+
|
542
|
+
def parse_identifiers(identifier, element, tag_name=nil, additional=nil)
|
543
|
+
frame_identifiers = identifier.delete(:frame)
|
544
|
+
identifier = add_tagname_if_needed identifier, tag_name, additional if tag_name
|
545
|
+
how, what = element.selenium_identifier_for identifier
|
546
|
+
return how, what, frame_identifiers
|
547
|
+
end
|
613
548
|
|
614
549
|
def add_tagname_if_needed identifier, tag, additional=nil
|
615
550
|
return identifier if identifier.length < 2 and supported_identifier(identifier, tag, additional)
|
@@ -627,6 +562,7 @@ module PageObject
|
|
627
562
|
return false if identifier[:text] and tag == 'input' and additional[:type] == 'hidden'
|
628
563
|
return false if identifier[:href] and tag == 'a'
|
629
564
|
return false if identifier[:text] and tag == 'div'
|
565
|
+
return false if identifier[:text] and tag == 'td'
|
630
566
|
true
|
631
567
|
end
|
632
568
|
|
@@ -101,8 +101,7 @@ module PageObject
|
|
101
101
|
# See PageObject::Accessors#text_field
|
102
102
|
#
|
103
103
|
def text_field_value_for(identifier)
|
104
|
-
frame_identifiers = identifier
|
105
|
-
identifier = Elements::TextField.watir_identifier_for identifier
|
104
|
+
identifier, frame_identifiers = parse_identifiers(identifier, Elements::TextField)
|
106
105
|
@browser.instance_eval "#{nested_frames(frame_identifiers)}text_field(identifier).value"
|
107
106
|
end
|
108
107
|
|
@@ -111,8 +110,7 @@ module PageObject
|
|
111
110
|
# See PageObject::Accessors#text_field
|
112
111
|
#
|
113
112
|
def text_field_value_set(identifier, value)
|
114
|
-
frame_identifiers = identifier
|
115
|
-
identifier = Elements::TextField.watir_identifier_for identifier
|
113
|
+
identifier, frame_identifiers = parse_identifiers(identifier, Elements::TextField)
|
116
114
|
@browser.instance_eval "#{nested_frames(frame_identifiers)}text_field(identifier).set(value)"
|
117
115
|
end
|
118
116
|
|
@@ -121,8 +119,7 @@ module PageObject
|
|
121
119
|
# See PageObject::Accessors#text_field
|
122
120
|
#
|
123
121
|
def text_field_for(identifier)
|
124
|
-
frame_identifiers = identifier
|
125
|
-
identifier = Elements::TextField.watir_identifier_for identifier
|
122
|
+
identifier, frame_identifiers = parse_identifiers(identifier, Elements::TextField)
|
126
123
|
element = @browser.instance_eval "#{nested_frames(frame_identifiers)}text_field(identifier)"
|
127
124
|
Elements::TextField.new(element, :platform => :watir)
|
128
125
|
end
|
@@ -132,8 +129,7 @@ module PageObject
|
|
132
129
|
# See PageObject::Accessors#hidden_field
|
133
130
|
#
|
134
131
|
def hidden_field_value_for(identifier)
|
135
|
-
frame_identifiers = identifier
|
136
|
-
identifier = Elements::HiddenField.watir_identifier_for identifier
|
132
|
+
identifier, frame_identifiers = parse_identifiers(identifier, Elements::HiddenField)
|
137
133
|
@browser.instance_eval "#{nested_frames(frame_identifiers)}hidden(identifier).value"
|
138
134
|
end
|
139
135
|
|
@@ -142,8 +138,7 @@ module PageObject
|
|
142
138
|
# See PageObject::Accessors#hidden_field
|
143
139
|
#
|
144
140
|
def hidden_field_for(identifier)
|
145
|
-
frame_identifiers = identifier
|
146
|
-
identifier = Elements::HiddenField.watir_identifier_for identifier
|
141
|
+
identifier, frame_identifiers = parse_identifiers(identifier, Elements::HiddenField)
|
147
142
|
element = @browser.instance_eval "#{nested_frames(frame_identifiers)}hidden(identifier)"
|
148
143
|
Elements::HiddenField.new(element, :platform => :watir)
|
149
144
|
end
|
@@ -153,8 +148,7 @@ module PageObject
|
|
153
148
|
# See PageObject::Accessors#text_area
|
154
149
|
#
|
155
150
|
def text_area_value_set(identifier, value)
|
156
|
-
frame_identifiers = identifier
|
157
|
-
identifier = Elements::TextArea.watir_identifier_for identifier
|
151
|
+
identifier, frame_identifiers = parse_identifiers(identifier, Elements::TextArea)
|
158
152
|
@browser.instance_eval "#{nested_frames(frame_identifiers)}textarea(identifier).send_keys(value)"
|
159
153
|
end
|
160
154
|
|
@@ -163,8 +157,7 @@ module PageObject
|
|
163
157
|
# See PageObject::Accessors#text_area
|
164
158
|
#
|
165
159
|
def text_area_value_for(identifier)
|
166
|
-
frame_identifiers = identifier
|
167
|
-
identifier = Elements::TextArea.watir_identifier_for identifier
|
160
|
+
identifier, frame_identifiers = parse_identifiers(identifier, Elements::TextArea)
|
168
161
|
@browser.instance_eval "#{nested_frames(frame_identifiers)}textarea(identifier).value"
|
169
162
|
end
|
170
163
|
|
@@ -173,8 +166,7 @@ module PageObject
|
|
173
166
|
# See PageObject::Accessors#text_area
|
174
167
|
#
|
175
168
|
def text_area_for(identifier)
|
176
|
-
frame_identifiers = identifier
|
177
|
-
identifier = Elements::TextArea.watir_identifier_for identifier
|
169
|
+
identifier, frame_identifiers = parse_identifiers(identifier, Elements::TextArea)
|
178
170
|
element = @browser.instance_eval "#{nested_frames(frame_identifiers)}textarea(identifier)"
|
179
171
|
Elements::TextArea.new(element, :platform => :watir)
|
180
172
|
end
|
@@ -184,8 +176,7 @@ module PageObject
|
|
184
176
|
# See PageObject::Accessors#select_list
|
185
177
|
#
|
186
178
|
def select_list_value_for(identifier)
|
187
|
-
frame_identifiers = identifier
|
188
|
-
identifier = Elements::SelectList.watir_identifier_for identifier
|
179
|
+
identifier, frame_identifiers = parse_identifiers(identifier, Elements::SelectList)
|
189
180
|
@browser.instance_eval "#{nested_frames(frame_identifiers)}select_list(identifier).value"
|
190
181
|
end
|
191
182
|
|
@@ -194,8 +185,7 @@ module PageObject
|
|
194
185
|
# See PageObject::Accessors#select_list
|
195
186
|
#
|
196
187
|
def select_list_value_set(identifier, value)
|
197
|
-
frame_identifiers = identifier
|
198
|
-
identifier = Elements::SelectList.watir_identifier_for identifier
|
188
|
+
identifier, frame_identifiers = parse_identifiers(identifier, Elements::SelectList)
|
199
189
|
@browser.instance_eval "#{nested_frames(frame_identifiers)}select_list(identifier).select(value)"
|
200
190
|
end
|
201
191
|
|
@@ -204,8 +194,7 @@ module PageObject
|
|
204
194
|
# See PageObject::Accessors#select_list
|
205
195
|
#
|
206
196
|
def select_list_for(identifier)
|
207
|
-
frame_identifiers = identifier
|
208
|
-
identifier = Elements::SelectList.watir_identifier_for identifier
|
197
|
+
identifier, frame_identifiers = parse_identifiers(identifier, Elements::SelectList)
|
209
198
|
element = @browser.instance_eval "#{nested_frames(frame_identifiers)}select_list(identifier)"
|
210
199
|
Elements::SelectList.new(element, :platform => :watir)
|
211
200
|
end
|
@@ -215,8 +204,7 @@ module PageObject
|
|
215
204
|
# See PageObject::Accessors#link
|
216
205
|
#
|
217
206
|
def click_link_for(identifier)
|
218
|
-
frame_identifiers = identifier
|
219
|
-
identifier = Elements::Link.watir_identifier_for identifier
|
207
|
+
identifier, frame_identifiers = parse_identifiers(identifier, Elements::Link)
|
220
208
|
@browser.instance_eval "#{nested_frames(frame_identifiers)}link(identifier).click if identifier"
|
221
209
|
end
|
222
210
|
|
@@ -225,8 +213,7 @@ module PageObject
|
|
225
213
|
# see PageObject::Accessors#link
|
226
214
|
#
|
227
215
|
def link_for(identifier)
|
228
|
-
frame_identifiers = identifier
|
229
|
-
identifier = Elements::Link.watir_identifier_for identifier
|
216
|
+
identifier, frame_identifiers = parse_identifiers(identifier, Elements::Link)
|
230
217
|
element = @browser.instance_eval "#{nested_frames(frame_identifiers)}link(identifier)"
|
231
218
|
Elements::Link.new(element, :platform => :watir)
|
232
219
|
end
|
@@ -236,8 +223,7 @@ module PageObject
|
|
236
223
|
# See PageObject::Accessors#checkbox
|
237
224
|
#
|
238
225
|
def check_checkbox(identifier)
|
239
|
-
frame_identifiers = identifier
|
240
|
-
identifier = Elements::CheckBox.watir_identifier_for identifier
|
226
|
+
identifier, frame_identifiers = parse_identifiers(identifier, Elements::CheckBox)
|
241
227
|
@browser.instance_eval "#{nested_frames(frame_identifiers)}checkbox(identifier).set"
|
242
228
|
end
|
243
229
|
|
@@ -246,8 +232,7 @@ module PageObject
|
|
246
232
|
# See PageObject::Accessors#checkbox
|
247
233
|
#
|
248
234
|
def uncheck_checkbox(identifier)
|
249
|
-
frame_identifiers = identifier
|
250
|
-
identifier = Elements::CheckBox.watir_identifier_for identifier
|
235
|
+
identifier, frame_identifiers = parse_identifiers(identifier, Elements::CheckBox)
|
251
236
|
@browser.instance_eval "#{nested_frames(frame_identifiers)}checkbox(identifier).clear"
|
252
237
|
end
|
253
238
|
|
@@ -256,8 +241,7 @@ module PageObject
|
|
256
241
|
# See PageObject::Accessors#checkbox
|
257
242
|
#
|
258
243
|
def checkbox_checked?(identifier)
|
259
|
-
frame_identifiers = identifier
|
260
|
-
identifier = Elements::CheckBox.watir_identifier_for identifier
|
244
|
+
identifier, frame_identifiers = parse_identifiers(identifier, Elements::CheckBox)
|
261
245
|
@browser.instance_eval "#{nested_frames(frame_identifiers)}checkbox(identifier).set?"
|
262
246
|
end
|
263
247
|
|
@@ -266,8 +250,7 @@ module PageObject
|
|
266
250
|
# See PageObject::Accessors#checkbox
|
267
251
|
#
|
268
252
|
def checkbox_for(identifier)
|
269
|
-
frame_identifiers = identifier
|
270
|
-
identifier = Elements::CheckBox.watir_identifier_for identifier
|
253
|
+
identifier, frame_identifiers = parse_identifiers(identifier, Elements::CheckBox)
|
271
254
|
element = @browser.instance_eval "#{nested_frames(frame_identifiers)}checkbox(identifier)"
|
272
255
|
Elements::CheckBox.new(element, :platform => :watir)
|
273
256
|
end
|
@@ -277,8 +260,7 @@ module PageObject
|
|
277
260
|
# See PageObject::Accessors#radio_button
|
278
261
|
#
|
279
262
|
def select_radio(identifier)
|
280
|
-
frame_identifiers = identifier
|
281
|
-
identifier = Elements::RadioButton.watir_identifier_for identifier
|
263
|
+
identifier, frame_identifiers = parse_identifiers(identifier, Elements::RadioButton)
|
282
264
|
@browser.instance_eval "#{nested_frames(frame_identifiers)}radio(identifier).set"
|
283
265
|
end
|
284
266
|
|
@@ -287,8 +269,7 @@ module PageObject
|
|
287
269
|
# See PageObject::Accessors#radio_button
|
288
270
|
#
|
289
271
|
def clear_radio(identifier)
|
290
|
-
frame_identifiers = identifier
|
291
|
-
identifier = Elements::RadioButton.watir_identifier_for identifier
|
272
|
+
identifier, frame_identifiers = parse_identifiers(identifier, Elements::RadioButton)
|
292
273
|
@browser.instance_eval "#{nested_frames(frame_identifiers)}radio(identifier).clear"
|
293
274
|
end
|
294
275
|
|
@@ -297,8 +278,7 @@ module PageObject
|
|
297
278
|
# See PageObject::Accessors#radio_button
|
298
279
|
#
|
299
280
|
def radio_selected?(identifier)
|
300
|
-
frame_identifiers = identifier
|
301
|
-
identifier = Elements::RadioButton.watir_identifier_for identifier
|
281
|
+
identifier, frame_identifiers = parse_identifiers(identifier, Elements::RadioButton)
|
302
282
|
@browser.instance_eval "#{nested_frames(frame_identifiers)}radio(identifier).set?"
|
303
283
|
end
|
304
284
|
|
@@ -307,8 +287,7 @@ module PageObject
|
|
307
287
|
# See PageObject::Accessors#radio_button
|
308
288
|
#
|
309
289
|
def radio_button_for(identifier)
|
310
|
-
frame_identifiers = identifier
|
311
|
-
identifier = Elements::RadioButton.watir_identifier_for identifier
|
290
|
+
identifier, frame_identifiers = parse_identifiers(identifier, Elements::RadioButton)
|
312
291
|
element = @browser.instance_eval "#{nested_frames(frame_identifiers)}radio(identifier)"
|
313
292
|
PageObject::Elements::RadioButton.new(element, :platform => :watir)
|
314
293
|
end
|
@@ -318,9 +297,7 @@ module PageObject
|
|
318
297
|
# See PageObject::Accessors#div
|
319
298
|
#
|
320
299
|
def div_text_for(identifier)
|
321
|
-
frame_identifiers = identifier
|
322
|
-
identifier = add_tagname_if_needed identifier, "div"
|
323
|
-
identifier = Elements::Div.watir_identifier_for identifier
|
300
|
+
identifier, frame_identifiers = parse_identifiers(identifier, Elements::Div, 'div')
|
324
301
|
@browser.instance_eval "#{nested_frames(frame_identifiers)}div(identifier).text"
|
325
302
|
end
|
326
303
|
|
@@ -329,9 +306,7 @@ module PageObject
|
|
329
306
|
# See PageObject::Accessors#div
|
330
307
|
#
|
331
308
|
def div_for(identifier)
|
332
|
-
frame_identifiers = identifier
|
333
|
-
identifier = add_tagname_if_needed identifier, "div"
|
334
|
-
identifier = Elements::Div.watir_identifier_for identifier
|
309
|
+
identifier, frame_identifiers = parse_identifiers(identifier, Elements::Div, 'div')
|
335
310
|
element = @browser.instance_eval "#{nested_frames(frame_identifiers)}div(identifier)"
|
336
311
|
PageObject::Elements::Div.new(element, :platform => :watir)
|
337
312
|
end
|
@@ -341,9 +316,7 @@ module PageObject
|
|
341
316
|
# See PageObject::Accessors#span
|
342
317
|
#
|
343
318
|
def span_text_for(identifier)
|
344
|
-
frame_identifiers = identifier
|
345
|
-
identifier = add_tagname_if_needed identifier, "span"
|
346
|
-
identifier = Elements::Span.watir_identifier_for identifier
|
319
|
+
identifier, frame_identifiers = parse_identifiers(identifier, Elements::Span, 'span')
|
347
320
|
@browser.instance_eval "#{nested_frames(frame_identifiers)}span(identifier).text"
|
348
321
|
end
|
349
322
|
|
@@ -352,9 +325,7 @@ module PageObject
|
|
352
325
|
# See PageObject::Accessors#span
|
353
326
|
#
|
354
327
|
def span_for(identifier)
|
355
|
-
frame_identifiers = identifier
|
356
|
-
identifier = add_tagname_if_needed identifier, "span"
|
357
|
-
identifier = Elements::Span.watir_identifier_for identifier
|
328
|
+
identifier, frame_identifiers = parse_identifiers(identifier, Elements::Span, 'span')
|
358
329
|
element = @browser.instance_eval "#{nested_frames(frame_identifiers)}span(identifier)"
|
359
330
|
PageObject::Elements::Span.new(element, :platform => :watir)
|
360
331
|
end
|
@@ -364,8 +335,7 @@ module PageObject
|
|
364
335
|
# See PageObject::Accessors#button
|
365
336
|
#
|
366
337
|
def click_button_for(identifier)
|
367
|
-
frame_identifiers = identifier
|
368
|
-
identifier = Elements::Button.watir_identifier_for identifier
|
338
|
+
identifier, frame_identifiers = parse_identifiers(identifier, Elements::Button)
|
369
339
|
@browser.instance_eval "#{nested_frames(frame_identifiers)}button(identifier).click"
|
370
340
|
end
|
371
341
|
|
@@ -374,8 +344,7 @@ module PageObject
|
|
374
344
|
# See PageObject::Accessors#button
|
375
345
|
#
|
376
346
|
def button_for(identifier)
|
377
|
-
frame_identifiers = identifier
|
378
|
-
identifier = Elements::Button.watir_identifier_for identifier
|
347
|
+
identifier, frame_identifiers = parse_identifiers(identifier, Elements::Button)
|
379
348
|
element = @browser.instance_eval "#{nested_frames(frame_identifiers)}button(identifier)"
|
380
349
|
PageObject::Elements::Button.new(element, :platform => :watir)
|
381
350
|
end
|
@@ -385,9 +354,7 @@ module PageObject
|
|
385
354
|
# See PageObject::Accessors#table
|
386
355
|
#
|
387
356
|
def table_for(identifier)
|
388
|
-
frame_identifiers = identifier
|
389
|
-
identifier = add_tagname_if_needed identifier, "table"
|
390
|
-
identifier = Elements::Table.watir_identifier_for identifier.clone
|
357
|
+
identifier, frame_identifiers = parse_identifiers(identifier, Elements::Table, 'table')
|
391
358
|
element = @browser.instance_eval "#{nested_frames(frame_identifiers)}table(identifier)"
|
392
359
|
PageObject::Elements::Table.new(element, :platform => :watir)
|
393
360
|
end
|
@@ -397,9 +364,7 @@ module PageObject
|
|
397
364
|
# See PageObject::Accessors#cell
|
398
365
|
#
|
399
366
|
def cell_text_for(identifier)
|
400
|
-
frame_identifiers = identifier
|
401
|
-
identifier = add_tagname_if_needed identifier, "td"
|
402
|
-
identifier = Elements::TableCell.watir_identifier_for identifier
|
367
|
+
identifier, frame_identifiers = parse_identifiers(identifier, Elements::TableCell, 'td')
|
403
368
|
@browser.instance_eval "#{nested_frames(frame_identifiers)}td(identifier).text"
|
404
369
|
end
|
405
370
|
|
@@ -408,9 +373,7 @@ module PageObject
|
|
408
373
|
# See PageObject::Accessors#cell
|
409
374
|
#
|
410
375
|
def cell_for(identifier)
|
411
|
-
frame_identifiers = identifier
|
412
|
-
identifier = add_tagname_if_needed identifier, "td"
|
413
|
-
identifier = Elements::TableCell.watir_identifier_for identifier
|
376
|
+
identifier, frame_identifiers = parse_identifiers(identifier, Elements::TableCell, 'td')
|
414
377
|
element = @browser.instance_eval "#{nested_frames(frame_identifiers)}td(identifier)"
|
415
378
|
PageObject::Elements::TableCell.new(element, :platform => :watir)
|
416
379
|
end
|
@@ -420,8 +383,7 @@ module PageObject
|
|
420
383
|
# See PageObject::Accessors#image
|
421
384
|
#
|
422
385
|
def image_for(identifier)
|
423
|
-
frame_identifiers = identifier
|
424
|
-
identifier = Elements::Image.watir_identifier_for identifier
|
386
|
+
identifier, frame_identifiers = parse_identifiers(identifier, Elements::Image)
|
425
387
|
element = @browser.instance_eval "#{nested_frames(frame_identifiers)}image(identifier)"
|
426
388
|
PageObject::Elements::Image.new(element, :platform => :watir)
|
427
389
|
end
|
@@ -431,8 +393,7 @@ module PageObject
|
|
431
393
|
# See PageObject::Accessors#form
|
432
394
|
#
|
433
395
|
def form_for(identifier)
|
434
|
-
frame_identifiers = identifier
|
435
|
-
identifier = Elements::Form.watir_identifier_for identifier
|
396
|
+
identifier, frame_identifiers = parse_identifiers(identifier, Elements::Form)
|
436
397
|
element = @browser.instance_eval "#{nested_frames(frame_identifiers)}form(identifier)"
|
437
398
|
PageObject::Elements::Form.new(element, :platform => :watir)
|
438
399
|
end
|
@@ -442,9 +403,7 @@ module PageObject
|
|
442
403
|
# See PageObject::Accessors#list_item
|
443
404
|
#
|
444
405
|
def list_item_text_for(identifier)
|
445
|
-
frame_identifiers = identifier
|
446
|
-
identifier = add_tagname_if_needed identifier, "li"
|
447
|
-
identifier = Elements::ListItem.watir_identifier_for identifier
|
406
|
+
identifier, frame_identifiers = parse_identifiers(identifier, Elements::ListItem, 'li')
|
448
407
|
@browser.instance_eval "#{nested_frames(frame_identifiers)}li(identifier).text"
|
449
408
|
end
|
450
409
|
|
@@ -453,9 +412,7 @@ module PageObject
|
|
453
412
|
# See PageObject::Accessors#list_item
|
454
413
|
#
|
455
414
|
def list_item_for(identifier)
|
456
|
-
frame_identifiers = identifier
|
457
|
-
identifier = add_tagname_if_needed identifier, "li"
|
458
|
-
identifier = Elements::ListItem.watir_identifier_for identifier
|
415
|
+
identifier, frame_identifiers = parse_identifiers(identifier, Elements::ListItem, 'li')
|
459
416
|
element = @browser.instance_eval "#{nested_frames(frame_identifiers)}li(identifier)"
|
460
417
|
PageObject::Elements::ListItem.new(element, :platform => :watir)
|
461
418
|
end
|
@@ -465,9 +422,7 @@ module PageObject
|
|
465
422
|
# See PageObject::Accessors#unordered_list
|
466
423
|
#
|
467
424
|
def unordered_list_for(identifier)
|
468
|
-
frame_identifiers = identifier
|
469
|
-
identifier = add_tagname_if_needed identifier, "ul"
|
470
|
-
identifier = Elements::UnorderedList.watir_identifier_for identifier
|
425
|
+
identifier, frame_identifiers = parse_identifiers(identifier, Elements::UnorderedList, 'ul')
|
471
426
|
element = @browser.instance_eval "#{nested_frames(frame_identifiers)}ul(identifier)"
|
472
427
|
PageObject::Elements::UnorderedList.new(element, :platform => :watir)
|
473
428
|
end
|
@@ -477,14 +432,19 @@ module PageObject
|
|
477
432
|
# See PageObject::Accessors#ordered_list
|
478
433
|
#
|
479
434
|
def ordered_list_for(identifier)
|
480
|
-
frame_identifiers = identifier
|
481
|
-
identifier = add_tagname_if_needed identifier, "ol"
|
482
|
-
identifier = Elements::OrderedList.watir_identifier_for identifier
|
435
|
+
identifier, frame_identifiers = parse_identifiers(identifier, Elements::OrderedList, 'ol')
|
483
436
|
element = @browser.instance_eval "#{nested_frames(frame_identifiers)}ol(identifier)"
|
484
437
|
PageObject::Elements::OrderedList.new(element, :platform => :watir)
|
485
438
|
end
|
486
439
|
|
487
440
|
private
|
441
|
+
|
442
|
+
def parse_identifiers(identifier, element, tag_name=nil)
|
443
|
+
frame_identifiers = identifier.delete(:frame)
|
444
|
+
identifier = add_tagname_if_needed identifier, tag_name if tag_name
|
445
|
+
identifier = element.watir_identifier_for identifier
|
446
|
+
return identifier, frame_identifiers
|
447
|
+
end
|
488
448
|
|
489
449
|
def add_tagname_if_needed identifier, tag
|
490
450
|
return identifier if identifier.length < 2 and not identifier[:name]
|