page-object 0.2.5 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (90) hide show
  1. data/ChangeLog +25 -0
  2. data/Rakefile +3 -3
  3. data/features/element.feature +232 -1
  4. data/features/frames.feature +1 -1
  5. data/features/html/modal.html +17 -0
  6. data/features/html/modal_1.html +38 -0
  7. data/features/html/modal_2.html +27 -0
  8. data/features/html/nested_elements.html +42 -0
  9. data/features/html/static_elements.html +1 -0
  10. data/features/modal_dialog.feature +15 -0
  11. data/features/nested_elements.feature +73 -0
  12. data/features/step_definitions/frames_steps.rb +1 -1
  13. data/features/step_definitions/modal_dialog_steps.rb +62 -0
  14. data/features/step_definitions/nested_elements_steps.rb +165 -0
  15. data/features/support/page.rb +1 -0
  16. data/features/support/url_helper.rb +8 -0
  17. data/lib/page-object.rb +26 -0
  18. data/lib/page-object/accessors.rb +36 -36
  19. data/lib/page-object/elements/button.rb +3 -3
  20. data/lib/page-object/elements/check_box.rb +7 -7
  21. data/lib/page-object/elements/element.rb +16 -10
  22. data/lib/page-object/elements/form.rb +7 -7
  23. data/lib/page-object/elements/image.rb +7 -7
  24. data/lib/page-object/elements/link.rb +3 -3
  25. data/lib/page-object/elements/ordered_list.rb +7 -7
  26. data/lib/page-object/elements/radio_button.rb +7 -7
  27. data/lib/page-object/elements/select_list.rb +7 -7
  28. data/lib/page-object/elements/table.rb +7 -7
  29. data/lib/page-object/elements/table_row.rb +7 -7
  30. data/lib/page-object/elements/text_area.rb +7 -7
  31. data/lib/page-object/elements/text_field.rb +7 -7
  32. data/lib/page-object/elements/unordered_list.rb +7 -7
  33. data/lib/page-object/nested_elements.rb +72 -0
  34. data/lib/page-object/platforms.rb +2 -2
  35. data/lib/page-object/platforms/selenium_webdriver.rb +17 -0
  36. data/lib/page-object/platforms/{selenium → selenium_webdriver}/button.rb +1 -1
  37. data/lib/page-object/platforms/{selenium → selenium_webdriver}/check_box.rb +1 -1
  38. data/lib/page-object/platforms/{selenium → selenium_webdriver}/element.rb +1 -1
  39. data/lib/page-object/platforms/{watir → selenium_webdriver}/form.rb +1 -1
  40. data/lib/page-object/platforms/{selenium → selenium_webdriver}/image.rb +1 -1
  41. data/lib/page-object/platforms/{selenium → selenium_webdriver}/link.rb +1 -1
  42. data/lib/page-object/platforms/{selenium → selenium_webdriver}/ordered_list.rb +2 -2
  43. data/lib/page-object/platforms/{selenium → selenium_webdriver}/page_object.rb +59 -59
  44. data/lib/page-object/platforms/{selenium → selenium_webdriver}/radio_button.rb +1 -1
  45. data/lib/page-object/platforms/{selenium → selenium_webdriver}/select_list.rb +2 -2
  46. data/lib/page-object/platforms/{selenium → selenium_webdriver}/table.rb +2 -2
  47. data/lib/page-object/platforms/{selenium → selenium_webdriver}/table_row.rb +2 -2
  48. data/lib/page-object/platforms/{selenium → selenium_webdriver}/text_area.rb +1 -1
  49. data/lib/page-object/platforms/{selenium → selenium_webdriver}/text_field.rb +1 -1
  50. data/lib/page-object/platforms/{selenium → selenium_webdriver}/unordered_list.rb +2 -2
  51. data/lib/page-object/platforms/watir_webdriver.rb +17 -0
  52. data/lib/page-object/platforms/{watir → watir_webdriver}/check_box.rb +1 -1
  53. data/lib/page-object/platforms/{watir → watir_webdriver}/element.rb +1 -1
  54. data/lib/page-object/platforms/{selenium → watir_webdriver}/form.rb +1 -1
  55. data/lib/page-object/platforms/{watir → watir_webdriver}/image.rb +1 -1
  56. data/lib/page-object/platforms/{watir → watir_webdriver}/ordered_list.rb +2 -2
  57. data/lib/page-object/platforms/watir_webdriver/page_object.rb +486 -0
  58. data/lib/page-object/platforms/{watir → watir_webdriver}/radio_button.rb +1 -1
  59. data/lib/page-object/platforms/{watir → watir_webdriver}/select_list.rb +3 -3
  60. data/lib/page-object/platforms/{watir → watir_webdriver}/table.rb +2 -2
  61. data/lib/page-object/platforms/{watir → watir_webdriver}/table_row.rb +2 -2
  62. data/lib/page-object/platforms/{watir → watir_webdriver}/text_area.rb +1 -1
  63. data/lib/page-object/platforms/{watir → watir_webdriver}/text_field.rb +1 -1
  64. data/lib/page-object/platforms/{watir → watir_webdriver}/unordered_list.rb +2 -2
  65. data/lib/page-object/version.rb +1 -1
  66. data/page-object.gemspec +1 -1
  67. data/spec/page-object/elements/button_spec.rb +1 -1
  68. data/spec/page-object/elements/check_box_spec.rb +1 -1
  69. data/spec/page-object/elements/element_spec.rb +9 -5
  70. data/spec/page-object/elements/form_spec.rb +2 -2
  71. data/spec/page-object/elements/image_spec.rb +4 -4
  72. data/spec/page-object/elements/link_spec.rb +1 -1
  73. data/spec/page-object/elements/nested_element_spec.rb +185 -0
  74. data/spec/page-object/elements/ordered_list_spec.rb +6 -6
  75. data/spec/page-object/elements/radio_button_spec.rb +1 -1
  76. data/spec/page-object/elements/select_list_spec.rb +5 -5
  77. data/spec/page-object/elements/table_row_spec.rb +6 -6
  78. data/spec/page-object/elements/table_spec.rb +2 -2
  79. data/spec/page-object/elements/text_area_spec.rb +1 -1
  80. data/spec/page-object/elements/text_field_spec.rb +1 -1
  81. data/spec/page-object/elements/unordered_list_spec.rb +6 -6
  82. data/spec/page-object/page-object_spec.rb +12 -2
  83. data/spec/page-object/platforms/{selenium → selenium_webdriver}/selenium_page_object_spec.rb +2 -2
  84. data/spec/page-object/platforms/selenium_webdriver_spec.rb +29 -0
  85. data/spec/page-object/platforms/{watir_spec.rb → watir_webdriver_spec.rb} +11 -6
  86. metadata +58 -39
  87. data/lib/page-object/platforms/selenium.rb +0 -16
  88. data/lib/page-object/platforms/watir.rb +0 -16
  89. data/lib/page-object/platforms/watir/page_object.rb +0 -482
  90. data/spec/page-object/platforms/selenium_spec.rb +0 -26
@@ -1,16 +0,0 @@
1
- module PageObject
2
- module Platforms
3
- module Selenium
4
-
5
- def self.create_page_object(browser)
6
- require 'page-object/platforms/selenium/page_object'
7
- return Object::PageObject::Platforms::Selenium::PageObject.new(browser)
8
- end
9
-
10
- def self.is_for?(browser)
11
- browser.is_a? Object::Selenium::WebDriver::Driver
12
- end
13
- end
14
- end
15
- end
16
- PageObject::Platforms.register(:selenium, PageObject::Platforms::Selenium)
@@ -1,16 +0,0 @@
1
- module PageObject
2
- module Platforms
3
- module Watir
4
- def self.create_page_object(browser)
5
- require 'page-object/platforms/watir/page_object'
6
- PageObject::WatirPageObject.new(browser)
7
- end
8
-
9
- def self.is_for?(browser)
10
- browser.is_a?(Object::Watir::Browser)
11
- end
12
- end
13
- end
14
- end
15
-
16
- PageObject::Platforms.register(:watir, PageObject::Platforms::Watir)
@@ -1,482 +0,0 @@
1
- require 'watir-webdriver/extensions/alerts'
2
- require 'page-object/elements'
3
- require 'page-object/core_ext/string'
4
-
5
-
6
- module PageObject
7
- #
8
- # Watir implementation of the page object platform driver. You should not use the
9
- # class directly. Instead you should include the PageObject module in your page object
10
- # and use the methods dynamically added from the PageObject::Accessors module.
11
- #
12
- class WatirPageObject
13
- attr_reader :browser
14
-
15
- def initialize(browser)
16
- @browser = browser
17
- end
18
-
19
- #
20
- # platform method to navigate to a provided url
21
- # See PageObject#navigate_to
22
- #
23
- def navigate_to(url)
24
- @browser.goto url
25
- end
26
-
27
- #
28
- # platform method to retrieve the text from the current page
29
- # See PageObject#text
30
- #
31
- def text
32
- @browser.text
33
- end
34
-
35
- #
36
- # platform method to retrieve the html for the current page
37
- # See PageObject#html
38
- #
39
- def html
40
- @browser.html
41
- end
42
-
43
- #
44
- # platform method to retrieve the title for the current page
45
- # See PageObject#title
46
- #
47
- def title
48
- @browser.title
49
- end
50
-
51
- #
52
- # platform method to wait for a block to return true
53
- # See PageObject#wait_until
54
- def wait_until(timeout, message = nil, &block)
55
- @browser.wait_until(timeout, message, &block)
56
- end
57
-
58
- #
59
- # platform method to handle an alert popup
60
- # See PageObject#alert
61
- #
62
- def alert(&block)
63
- @browser.alert(&block)
64
- end
65
-
66
- #
67
- # platform method to handle a confirm popup
68
- # See PageObject#confirm
69
- #
70
- def confirm(response, &block)
71
- @browser.confirm(response, &block)
72
- end
73
-
74
- #
75
- # platform method to handle a prompt popup
76
- # See PageObject#prompt
77
- #
78
- def prompt(answer, &block)
79
- @browser.prompt(answer, &block)
80
- end
81
-
82
- #
83
- # platform method to handle attaching to a running window
84
- # See PageObject#attach_to_window
85
- #
86
- def attach_to_window(identifier, &block)
87
- win_id = {identifier.keys.first => /#{Regexp.escape(identifier.values.first)}/}
88
- @browser.window(win_id).use &block
89
- end
90
-
91
- #
92
- # platform method to refresh the page
93
- # See PageObject#refresh
94
- #
95
- def refresh
96
- @browser.refresh
97
- end
98
-
99
- #
100
- # platform method to go back to the previous page
101
- # See PageObject#back
102
- #
103
- def back
104
- @browser.back
105
- end
106
-
107
- #
108
- # platform method to go forward to the next page
109
- # See PageObject#forward
110
- #
111
- def forward
112
- @browser.forward
113
- end
114
-
115
- #
116
- # platform method to get the value stored in a text field
117
- # See PageObject::Accessors#text_field
118
- #
119
- def text_field_value_for(identifier)
120
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::TextField)
121
- @browser.instance_eval "#{nested_frames(frame_identifiers)}text_field(identifier).value"
122
- end
123
-
124
- #
125
- # platform method to set the value for a text field
126
- # See PageObject::Accessors#text_field
127
- #
128
- def text_field_value_set(identifier, value)
129
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::TextField)
130
- @browser.instance_eval "#{nested_frames(frame_identifiers)}text_field(identifier).set(value)"
131
- end
132
-
133
- #
134
- # platform method to retrieve a text field element
135
- # See PageObject::Accessors#text_field
136
- #
137
- def text_field_for(identifier)
138
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::TextField)
139
- element = @browser.instance_eval "#{nested_frames(frame_identifiers)}text_field(identifier)"
140
- Elements::TextField.new(element, :platform => :watir)
141
- end
142
-
143
- #
144
- # platform method to get the value stored in a hidden field
145
- # See PageObject::Accessors#hidden_field
146
- #
147
- def hidden_field_value_for(identifier)
148
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::HiddenField)
149
- @browser.instance_eval "#{nested_frames(frame_identifiers)}hidden(identifier).value"
150
- end
151
-
152
- #
153
- # platform method to retrieve a hidden field element
154
- # See PageObject::Accessors#hidden_field
155
- #
156
- def hidden_field_for(identifier)
157
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::HiddenField)
158
- element = @browser.instance_eval "#{nested_frames(frame_identifiers)}hidden(identifier)"
159
- Elements::HiddenField.new(element, :platform => :watir)
160
- end
161
-
162
- #
163
- # platform method to set text in a textarea
164
- # See PageObject::Accessors#text_area
165
- #
166
- def text_area_value_set(identifier, value)
167
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::TextArea)
168
- @browser.instance_eval "#{nested_frames(frame_identifiers)}textarea(identifier).send_keys(value)"
169
- end
170
-
171
- #
172
- # platform method to get the text from a textarea
173
- # See PageObject::Accessors#text_area
174
- #
175
- def text_area_value_for(identifier)
176
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::TextArea)
177
- @browser.instance_eval "#{nested_frames(frame_identifiers)}textarea(identifier).value"
178
- end
179
-
180
- #
181
- # platform method to get the text area element
182
- # See PageObject::Accessors#text_area
183
- #
184
- def text_area_for(identifier)
185
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::TextArea)
186
- element = @browser.instance_eval "#{nested_frames(frame_identifiers)}textarea(identifier)"
187
- Elements::TextArea.new(element, :platform => :watir)
188
- end
189
-
190
- #
191
- # platform method to get the currently selected value from a select list
192
- # See PageObject::Accessors#select_list
193
- #
194
- def select_list_value_for(identifier)
195
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::SelectList)
196
- @browser.instance_eval "#{nested_frames(frame_identifiers)}select_list(identifier).value"
197
- end
198
-
199
- #
200
- # platform method to select a value from a select list
201
- # See PageObject::Accessors#select_list
202
- #
203
- def select_list_value_set(identifier, value)
204
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::SelectList)
205
- @browser.instance_eval "#{nested_frames(frame_identifiers)}select_list(identifier).select(value)"
206
- end
207
-
208
- #
209
- # platform method to return the select list element
210
- # See PageObject::Accessors#select_list
211
- #
212
- def select_list_for(identifier)
213
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::SelectList)
214
- element = @browser.instance_eval "#{nested_frames(frame_identifiers)}select_list(identifier)"
215
- Elements::SelectList.new(element, :platform => :watir)
216
- end
217
-
218
- #
219
- # platform method to click a link
220
- # See PageObject::Accessors#link
221
- #
222
- def click_link_for(identifier)
223
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Link)
224
- @browser.instance_eval "#{nested_frames(frame_identifiers)}link(identifier).click if identifier"
225
- end
226
-
227
- #
228
- # platform method to return a PageObject::Elements::Link object
229
- # see PageObject::Accessors#link
230
- #
231
- def link_for(identifier)
232
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Link)
233
- element = @browser.instance_eval "#{nested_frames(frame_identifiers)}link(identifier)"
234
- Elements::Link.new(element, :platform => :watir)
235
- end
236
-
237
- #
238
- # platform method to check a checkbox
239
- # See PageObject::Accessors#checkbox
240
- #
241
- def check_checkbox(identifier)
242
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::CheckBox)
243
- @browser.instance_eval "#{nested_frames(frame_identifiers)}checkbox(identifier).set"
244
- end
245
-
246
- #
247
- # platform method to uncheck a checkbox
248
- # See PageObject::Accessors#checkbox
249
- #
250
- def uncheck_checkbox(identifier)
251
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::CheckBox)
252
- @browser.instance_eval "#{nested_frames(frame_identifiers)}checkbox(identifier).clear"
253
- end
254
-
255
- #
256
- # platform method to determine if a checkbox is checked
257
- # See PageObject::Accessors#checkbox
258
- #
259
- def checkbox_checked?(identifier)
260
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::CheckBox)
261
- @browser.instance_eval "#{nested_frames(frame_identifiers)}checkbox(identifier).set?"
262
- end
263
-
264
- #
265
- # platform method to return a PageObject::Elements::CheckBox element
266
- # See PageObject::Accessors#checkbox
267
- #
268
- def checkbox_for(identifier)
269
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::CheckBox)
270
- element = @browser.instance_eval "#{nested_frames(frame_identifiers)}checkbox(identifier)"
271
- Elements::CheckBox.new(element, :platform => :watir)
272
- end
273
-
274
- #
275
- # platform method to select a radio button
276
- # See PageObject::Accessors#radio_button
277
- #
278
- def select_radio(identifier)
279
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::RadioButton)
280
- @browser.instance_eval "#{nested_frames(frame_identifiers)}radio(identifier).set"
281
- end
282
-
283
- #
284
- # platform method to clear a radio button
285
- # See PageObject::Accessors#radio_button
286
- #
287
- def clear_radio(identifier)
288
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::RadioButton)
289
- @browser.instance_eval "#{nested_frames(frame_identifiers)}radio(identifier).clear"
290
- end
291
-
292
- #
293
- # platform method to determine if a radio button is selected
294
- # See PageObject::Accessors#radio_button
295
- #
296
- def radio_selected?(identifier)
297
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::RadioButton)
298
- @browser.instance_eval "#{nested_frames(frame_identifiers)}radio(identifier).set?"
299
- end
300
-
301
- #
302
- # platform method to return a PageObject::Eements::RadioButton element
303
- # See PageObject::Accessors#radio_button
304
- #
305
- def radio_button_for(identifier)
306
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::RadioButton)
307
- element = @browser.instance_eval "#{nested_frames(frame_identifiers)}radio(identifier)"
308
- PageObject::Elements::RadioButton.new(element, :platform => :watir)
309
- end
310
-
311
- #
312
- # platform method to return the text for a div
313
- # See PageObject::Accessors#div
314
- #
315
- def div_text_for(identifier)
316
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Div, 'div')
317
- @browser.instance_eval "#{nested_frames(frame_identifiers)}div(identifier).text"
318
- end
319
-
320
- #
321
- # platform method to return a PageObject::Elements::Div element
322
- # See PageObject::Accessors#div
323
- #
324
- def div_for(identifier)
325
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Div, 'div')
326
- element = @browser.instance_eval "#{nested_frames(frame_identifiers)}div(identifier)"
327
- PageObject::Elements::Div.new(element, :platform => :watir)
328
- end
329
-
330
- #
331
- # platform method to return the text for a span
332
- # See PageObject::Accessors#span
333
- #
334
- def span_text_for(identifier)
335
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Span, 'span')
336
- @browser.instance_eval "#{nested_frames(frame_identifiers)}span(identifier).text"
337
- end
338
-
339
- #
340
- # platform method to return a PageObject::Elements::Span element
341
- # See PageObject::Accessors#span
342
- #
343
- def span_for(identifier)
344
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Span, 'span')
345
- element = @browser.instance_eval "#{nested_frames(frame_identifiers)}span(identifier)"
346
- PageObject::Elements::Span.new(element, :platform => :watir)
347
- end
348
-
349
- #
350
- # platform method to click a button
351
- # See PageObject::Accessors#button
352
- #
353
- def click_button_for(identifier)
354
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Button)
355
- @browser.instance_eval "#{nested_frames(frame_identifiers)}button(identifier).click"
356
- end
357
-
358
- #
359
- # platform method to retrieve a button element
360
- # See PageObject::Accessors#button
361
- #
362
- def button_for(identifier)
363
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Button)
364
- element = @browser.instance_eval "#{nested_frames(frame_identifiers)}button(identifier)"
365
- PageObject::Elements::Button.new(element, :platform => :watir)
366
- end
367
-
368
- #
369
- # platform method to retrieve a table element
370
- # See PageObject::Accessors#table
371
- #
372
- def table_for(identifier)
373
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Table, 'table')
374
- element = @browser.instance_eval "#{nested_frames(frame_identifiers)}table(identifier)"
375
- PageObject::Elements::Table.new(element, :platform => :watir)
376
- end
377
-
378
- #
379
- # platform method to retrieve the text from a table cell
380
- # See PageObject::Accessors#cell
381
- #
382
- def cell_text_for(identifier)
383
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::TableCell, 'td')
384
- @browser.instance_eval "#{nested_frames(frame_identifiers)}td(identifier).text"
385
- end
386
-
387
- #
388
- # platform method to retrieve a table cell element
389
- # See PageObject::Accessors#cell
390
- #
391
- def cell_for(identifier)
392
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::TableCell, 'td')
393
- element = @browser.instance_eval "#{nested_frames(frame_identifiers)}td(identifier)"
394
- PageObject::Elements::TableCell.new(element, :platform => :watir)
395
- end
396
-
397
- #
398
- # platform method to retrieve an image element
399
- # See PageObject::Accessors#image
400
- #
401
- def image_for(identifier)
402
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Image)
403
- element = @browser.instance_eval "#{nested_frames(frame_identifiers)}image(identifier)"
404
- PageObject::Elements::Image.new(element, :platform => :watir)
405
- end
406
-
407
- #
408
- # platform method to retrieve a form element
409
- # See PageObject::Accessors#form
410
- #
411
- def form_for(identifier)
412
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::Form)
413
- element = @browser.instance_eval "#{nested_frames(frame_identifiers)}form(identifier)"
414
- PageObject::Elements::Form.new(element, :platform => :watir)
415
- end
416
-
417
- #
418
- # platform method to retrieve the text from a list item
419
- # See PageObject::Accessors#list_item
420
- #
421
- def list_item_text_for(identifier)
422
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::ListItem, 'li')
423
- @browser.instance_eval "#{nested_frames(frame_identifiers)}li(identifier).text"
424
- end
425
-
426
- #
427
- # platform method to retrieve a list item element
428
- # See PageObject::Accessors#list_item
429
- #
430
- def list_item_for(identifier)
431
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::ListItem, 'li')
432
- element = @browser.instance_eval "#{nested_frames(frame_identifiers)}li(identifier)"
433
- PageObject::Elements::ListItem.new(element, :platform => :watir)
434
- end
435
-
436
- #
437
- # platform method to retrieve an unordered list element
438
- # See PageObject::Accessors#unordered_list
439
- #
440
- def unordered_list_for(identifier)
441
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::UnorderedList, 'ul')
442
- element = @browser.instance_eval "#{nested_frames(frame_identifiers)}ul(identifier)"
443
- PageObject::Elements::UnorderedList.new(element, :platform => :watir)
444
- end
445
-
446
- #
447
- # platform method to retrieve an ordered list element
448
- # See PageObject::Accessors#ordered_list
449
- #
450
- def ordered_list_for(identifier)
451
- identifier, frame_identifiers = parse_identifiers(identifier, Elements::OrderedList, 'ol')
452
- element = @browser.instance_eval "#{nested_frames(frame_identifiers)}ol(identifier)"
453
- PageObject::Elements::OrderedList.new(element, :platform => :watir)
454
- end
455
-
456
- private
457
-
458
- def parse_identifiers(identifier, element, tag_name=nil)
459
- frame_identifiers = identifier.delete(:frame)
460
- identifier = add_tagname_if_needed identifier, tag_name if tag_name
461
- identifier = element.watir_identifier_for identifier
462
- return identifier, frame_identifiers
463
- end
464
-
465
- def add_tagname_if_needed identifier, tag
466
- return identifier if identifier.length < 2 and not identifier[:name]
467
- identifier[:tag_name] = tag if identifier[:name]
468
- identifier
469
- end
470
-
471
- def nested_frames(frame_identifiers)
472
- return if frame_identifiers.nil?
473
- frame_str = ''
474
- frame_identifiers.each do |id|
475
- value = id.values.first
476
- frame_str += "frame(:#{id.keys.first} => #{value})." if value.to_s.is_integer
477
- frame_str += "frame(:#{id.keys.first} => '#{value}')." unless value.to_s.is_integer
478
- end
479
- frame_str
480
- end
481
- end
482
- end