page-object 0.2.1 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -148,6 +148,13 @@ module PageObject
148
148
  def send_keys(*args)
149
149
  @element.send_keys(*args)
150
150
  end
151
+
152
+ #
153
+ # clear the contents of the element
154
+ #
155
+ def clear
156
+ @element.clear
157
+ end
151
158
  end
152
159
  end
153
160
  end
@@ -1,5 +1,6 @@
1
1
  require 'watir-webdriver/extensions/alerts'
2
2
  require 'page-object/elements'
3
+ require 'page-object/core_ext/string'
3
4
 
4
5
 
5
6
  module PageObject
@@ -87,14 +88,6 @@ module PageObject
87
88
  @browser.window(win_id).use
88
89
  end
89
90
 
90
- #
91
- # platform method to handle switching to a frame
92
- # See PageObject#switch_to_frame
93
- #
94
- def switch_to_frame(identifier)
95
- @browser.wd.switch_to.frame(identifier)
96
- end
97
-
98
91
  #
99
92
  # platform method to refresh the page
100
93
  # See PageObject#refresh
@@ -108,8 +101,9 @@ module PageObject
108
101
  # See PageObject::Accessors#text_field
109
102
  #
110
103
  def text_field_value_for(identifier)
104
+ frame_identifiers = identifier.delete(:frame)
111
105
  identifier = Elements::TextField.watir_identifier_for identifier
112
- @browser.text_field(identifier).value
106
+ @browser.instance_eval "#{nested_frames(frame_identifiers)}text_field(identifier).value"
113
107
  end
114
108
 
115
109
  #
@@ -117,17 +111,19 @@ module PageObject
117
111
  # See PageObject::Accessors#text_field
118
112
  #
119
113
  def text_field_value_set(identifier, value)
114
+ frame_identifiers = identifier.delete(:frame)
120
115
  identifier = Elements::TextField.watir_identifier_for identifier
121
- @browser.text_field(identifier).set(value)
116
+ @browser.instance_eval "#{nested_frames(frame_identifiers)}text_field(identifier).set(value)"
122
117
  end
123
-
118
+
124
119
  #
125
120
  # platform method to retrieve a text field element
126
121
  # See PageObject::Accessors#text_field
127
122
  #
128
123
  def text_field_for(identifier)
124
+ frame_identifiers = identifier.delete(:frame)
129
125
  identifier = Elements::TextField.watir_identifier_for identifier
130
- element = @browser.text_field(identifier)
126
+ element = @browser.instance_eval "#{nested_frames(frame_identifiers)}text_field(identifier)"
131
127
  Elements::TextField.new(element, :platform => :watir)
132
128
  end
133
129
 
@@ -136,8 +132,9 @@ module PageObject
136
132
  # See PageObject::Accessors#hidden_field
137
133
  #
138
134
  def hidden_field_value_for(identifier)
135
+ frame_identifiers = identifier.delete(:frame)
139
136
  identifier = Elements::HiddenField.watir_identifier_for identifier
140
- @browser.hidden(identifier).value
137
+ @browser.instance_eval "#{nested_frames(frame_identifiers)}hidden(identifier).value"
141
138
  end
142
139
 
143
140
  #
@@ -145,8 +142,9 @@ module PageObject
145
142
  # See PageObject::Accessors#hidden_field
146
143
  #
147
144
  def hidden_field_for(identifier)
145
+ frame_identifiers = identifier.delete(:frame)
148
146
  identifier = Elements::HiddenField.watir_identifier_for identifier
149
- element = @browser.hidden(identifier)
147
+ element = @browser.instance_eval "#{nested_frames(frame_identifiers)}hidden(identifier)"
150
148
  Elements::HiddenField.new(element, :platform => :watir)
151
149
  end
152
150
 
@@ -155,8 +153,9 @@ module PageObject
155
153
  # See PageObject::Accessors#text_area
156
154
  #
157
155
  def text_area_value_set(identifier, value)
156
+ frame_identifiers = identifier.delete(:frame)
158
157
  identifier = Elements::TextArea.watir_identifier_for identifier
159
- @browser.textarea(identifier).send_keys(value)
158
+ @browser.instance_eval "#{nested_frames(frame_identifiers)}textarea(identifier).send_keys(value)"
160
159
  end
161
160
 
162
161
  #
@@ -164,8 +163,9 @@ module PageObject
164
163
  # See PageObject::Accessors#text_area
165
164
  #
166
165
  def text_area_value_for(identifier)
166
+ frame_identifiers = identifier.delete(:frame)
167
167
  identifier = Elements::TextArea.watir_identifier_for identifier
168
- @browser.textarea(identifier).value
168
+ @browser.instance_eval "#{nested_frames(frame_identifiers)}textarea(identifier).value"
169
169
  end
170
170
 
171
171
  #
@@ -173,8 +173,9 @@ module PageObject
173
173
  # See PageObject::Accessors#text_area
174
174
  #
175
175
  def text_area_for(identifier)
176
+ frame_identifiers = identifier.delete(:frame)
176
177
  identifier = Elements::TextArea.watir_identifier_for identifier
177
- element = @browser.textarea(identifier)
178
+ element = @browser.instance_eval "#{nested_frames(frame_identifiers)}textarea(identifier)"
178
179
  Elements::TextArea.new(element, :platform => :watir)
179
180
  end
180
181
 
@@ -183,8 +184,9 @@ module PageObject
183
184
  # See PageObject::Accessors#select_list
184
185
  #
185
186
  def select_list_value_for(identifier)
187
+ frame_identifiers = identifier.delete(:frame)
186
188
  identifier = Elements::SelectList.watir_identifier_for identifier
187
- @browser.select_list(identifier).value
189
+ @browser.instance_eval "#{nested_frames(frame_identifiers)}select_list(identifier).value"
188
190
  end
189
191
 
190
192
  #
@@ -192,8 +194,9 @@ module PageObject
192
194
  # See PageObject::Accessors#select_list
193
195
  #
194
196
  def select_list_value_set(identifier, value)
197
+ frame_identifiers = identifier.delete(:frame)
195
198
  identifier = Elements::SelectList.watir_identifier_for identifier
196
- @browser.select_list(identifier).select(value)
199
+ @browser.instance_eval "#{nested_frames(frame_identifiers)}select_list(identifier).select(value)"
197
200
  end
198
201
 
199
202
  #
@@ -201,8 +204,9 @@ module PageObject
201
204
  # See PageObject::Accessors#select_list
202
205
  #
203
206
  def select_list_for(identifier)
207
+ frame_identifiers = identifier.delete(:frame)
204
208
  identifier = Elements::SelectList.watir_identifier_for identifier
205
- element = @browser.select_list(identifier)
209
+ element = @browser.instance_eval "#{nested_frames(frame_identifiers)}select_list(identifier)"
206
210
  Elements::SelectList.new(element, :platform => :watir)
207
211
  end
208
212
 
@@ -211,8 +215,9 @@ module PageObject
211
215
  # See PageObject::Accessors#link
212
216
  #
213
217
  def click_link_for(identifier)
218
+ frame_identifiers = identifier.delete(:frame)
214
219
  identifier = Elements::Link.watir_identifier_for identifier
215
- @browser.link(identifier).click if identifier
220
+ @browser.instance_eval "#{nested_frames(frame_identifiers)}link(identifier).click if identifier"
216
221
  end
217
222
 
218
223
  #
@@ -220,8 +225,9 @@ module PageObject
220
225
  # see PageObject::Accessors#link
221
226
  #
222
227
  def link_for(identifier)
228
+ frame_identifiers = identifier.delete(:frame)
223
229
  identifier = Elements::Link.watir_identifier_for identifier
224
- element = @browser.link(identifier)
230
+ element = @browser.instance_eval "#{nested_frames(frame_identifiers)}link(identifier)"
225
231
  Elements::Link.new(element, :platform => :watir)
226
232
  end
227
233
 
@@ -230,8 +236,9 @@ module PageObject
230
236
  # See PageObject::Accessors#checkbox
231
237
  #
232
238
  def check_checkbox(identifier)
239
+ frame_identifiers = identifier.delete(:frame)
233
240
  identifier = Elements::CheckBox.watir_identifier_for identifier
234
- @browser.checkbox(identifier).set
241
+ @browser.instance_eval "#{nested_frames(frame_identifiers)}checkbox(identifier).set"
235
242
  end
236
243
 
237
244
  #
@@ -239,8 +246,9 @@ module PageObject
239
246
  # See PageObject::Accessors#checkbox
240
247
  #
241
248
  def uncheck_checkbox(identifier)
249
+ frame_identifiers = identifier.delete(:frame)
242
250
  identifier = Elements::CheckBox.watir_identifier_for identifier
243
- @browser.checkbox(identifier).clear
251
+ @browser.instance_eval "#{nested_frames(frame_identifiers)}checkbox(identifier).clear"
244
252
  end
245
253
 
246
254
  #
@@ -248,8 +256,9 @@ module PageObject
248
256
  # See PageObject::Accessors#checkbox
249
257
  #
250
258
  def checkbox_checked?(identifier)
259
+ frame_identifiers = identifier.delete(:frame)
251
260
  identifier = Elements::CheckBox.watir_identifier_for identifier
252
- @browser.checkbox(identifier).set?
261
+ @browser.instance_eval "#{nested_frames(frame_identifiers)}checkbox(identifier).set?"
253
262
  end
254
263
 
255
264
  #
@@ -257,8 +266,9 @@ module PageObject
257
266
  # See PageObject::Accessors#checkbox
258
267
  #
259
268
  def checkbox_for(identifier)
269
+ frame_identifiers = identifier.delete(:frame)
260
270
  identifier = Elements::CheckBox.watir_identifier_for identifier
261
- element = @browser.checkbox(identifier)
271
+ element = @browser.instance_eval "#{nested_frames(frame_identifiers)}checkbox(identifier)"
262
272
  Elements::CheckBox.new(element, :platform => :watir)
263
273
  end
264
274
 
@@ -267,8 +277,9 @@ module PageObject
267
277
  # See PageObject::Accessors#radio_button
268
278
  #
269
279
  def select_radio(identifier)
280
+ frame_identifiers = identifier.delete(:frame)
270
281
  identifier = Elements::RadioButton.watir_identifier_for identifier
271
- @browser.radio(identifier).set
282
+ @browser.instance_eval "#{nested_frames(frame_identifiers)}radio(identifier).set"
272
283
  end
273
284
 
274
285
  #
@@ -276,8 +287,9 @@ module PageObject
276
287
  # See PageObject::Accessors#radio_button
277
288
  #
278
289
  def clear_radio(identifier)
290
+ frame_identifiers = identifier.delete(:frame)
279
291
  identifier = Elements::RadioButton.watir_identifier_for identifier
280
- @browser.radio(identifier).clear
292
+ @browser.instance_eval "#{nested_frames(frame_identifiers)}radio(identifier).clear"
281
293
  end
282
294
 
283
295
  #
@@ -285,8 +297,9 @@ module PageObject
285
297
  # See PageObject::Accessors#radio_button
286
298
  #
287
299
  def radio_selected?(identifier)
300
+ frame_identifiers = identifier.delete(:frame)
288
301
  identifier = Elements::RadioButton.watir_identifier_for identifier
289
- @browser.radio(identifier).set?
302
+ @browser.instance_eval "#{nested_frames(frame_identifiers)}radio(identifier).set?"
290
303
  end
291
304
 
292
305
  #
@@ -294,8 +307,9 @@ module PageObject
294
307
  # See PageObject::Accessors#radio_button
295
308
  #
296
309
  def radio_button_for(identifier)
310
+ frame_identifiers = identifier.delete(:frame)
297
311
  identifier = Elements::RadioButton.watir_identifier_for identifier
298
- element = @browser.radio(identifier)
312
+ element = @browser.instance_eval "#{nested_frames(frame_identifiers)}radio(identifier)"
299
313
  PageObject::Elements::RadioButton.new(element, :platform => :watir)
300
314
  end
301
315
 
@@ -304,9 +318,10 @@ module PageObject
304
318
  # See PageObject::Accessors#div
305
319
  #
306
320
  def div_text_for(identifier)
321
+ frame_identifiers = identifier.delete(:frame)
307
322
  identifier = add_tagname_if_needed identifier, "div"
308
323
  identifier = Elements::Div.watir_identifier_for identifier
309
- @browser.div(identifier).text
324
+ @browser.instance_eval "#{nested_frames(frame_identifiers)}div(identifier).text"
310
325
  end
311
326
 
312
327
  #
@@ -314,9 +329,10 @@ module PageObject
314
329
  # See PageObject::Accessors#div
315
330
  #
316
331
  def div_for(identifier)
332
+ frame_identifiers = identifier.delete(:frame)
317
333
  identifier = add_tagname_if_needed identifier, "div"
318
334
  identifier = Elements::Div.watir_identifier_for identifier
319
- element = @browser.div(identifier)
335
+ element = @browser.instance_eval "#{nested_frames(frame_identifiers)}div(identifier)"
320
336
  PageObject::Elements::Div.new(element, :platform => :watir)
321
337
  end
322
338
 
@@ -325,9 +341,10 @@ module PageObject
325
341
  # See PageObject::Accessors#span
326
342
  #
327
343
  def span_text_for(identifier)
344
+ frame_identifiers = identifier.delete(:frame)
328
345
  identifier = add_tagname_if_needed identifier, "span"
329
346
  identifier = Elements::Span.watir_identifier_for identifier
330
- @browser.span(identifier).text
347
+ @browser.instance_eval "#{nested_frames(frame_identifiers)}span(identifier).text"
331
348
  end
332
349
 
333
350
  #
@@ -335,9 +352,10 @@ module PageObject
335
352
  # See PageObject::Accessors#span
336
353
  #
337
354
  def span_for(identifier)
355
+ frame_identifiers = identifier.delete(:frame)
338
356
  identifier = add_tagname_if_needed identifier, "span"
339
357
  identifier = Elements::Span.watir_identifier_for identifier
340
- element = @browser.span(identifier)
358
+ element = @browser.instance_eval "#{nested_frames(frame_identifiers)}span(identifier)"
341
359
  PageObject::Elements::Span.new(element, :platform => :watir)
342
360
  end
343
361
 
@@ -346,8 +364,9 @@ module PageObject
346
364
  # See PageObject::Accessors#button
347
365
  #
348
366
  def click_button_for(identifier)
367
+ frame_identifiers = identifier.delete(:frame)
349
368
  identifier = Elements::Button.watir_identifier_for identifier
350
- @browser.button(identifier).click
369
+ @browser.instance_eval "#{nested_frames(frame_identifiers)}button(identifier).click"
351
370
  end
352
371
 
353
372
  #
@@ -355,8 +374,9 @@ module PageObject
355
374
  # See PageObject::Accessors#button
356
375
  #
357
376
  def button_for(identifier)
377
+ frame_identifiers = identifier.delete(:frame)
358
378
  identifier = Elements::Button.watir_identifier_for identifier
359
- element = @browser.button(identifier)
379
+ element = @browser.instance_eval "#{nested_frames(frame_identifiers)}button(identifier)"
360
380
  PageObject::Elements::Button.new(element, :platform => :watir)
361
381
  end
362
382
 
@@ -365,9 +385,10 @@ module PageObject
365
385
  # See PageObject::Accessors#table
366
386
  #
367
387
  def table_for(identifier)
388
+ frame_identifiers = identifier.delete(:frame)
368
389
  identifier = add_tagname_if_needed identifier, "table"
369
390
  identifier = Elements::Table.watir_identifier_for identifier.clone
370
- element = @browser.table(identifier)
391
+ element = @browser.instance_eval "#{nested_frames(frame_identifiers)}table(identifier)"
371
392
  PageObject::Elements::Table.new(element, :platform => :watir)
372
393
  end
373
394
 
@@ -376,9 +397,10 @@ module PageObject
376
397
  # See PageObject::Accessors#cell
377
398
  #
378
399
  def cell_text_for(identifier)
400
+ frame_identifiers = identifier.delete(:frame)
379
401
  identifier = add_tagname_if_needed identifier, "td"
380
402
  identifier = Elements::TableCell.watir_identifier_for identifier
381
- @browser.td(identifier).text
403
+ @browser.instance_eval "#{nested_frames(frame_identifiers)}td(identifier).text"
382
404
  end
383
405
 
384
406
  #
@@ -386,9 +408,10 @@ module PageObject
386
408
  # See PageObject::Accessors#cell
387
409
  #
388
410
  def cell_for(identifier)
411
+ frame_identifiers = identifier.delete(:frame)
389
412
  identifier = add_tagname_if_needed identifier, "td"
390
413
  identifier = Elements::TableCell.watir_identifier_for identifier
391
- element = @browser.td(identifier)
414
+ element = @browser.instance_eval "#{nested_frames(frame_identifiers)}td(identifier)"
392
415
  PageObject::Elements::TableCell.new(element, :platform => :watir)
393
416
  end
394
417
 
@@ -397,8 +420,9 @@ module PageObject
397
420
  # See PageObject::Accessors#image
398
421
  #
399
422
  def image_for(identifier)
423
+ frame_identifiers = identifier.delete(:frame)
400
424
  identifier = Elements::Image.watir_identifier_for identifier
401
- element = @browser.image(identifier)
425
+ element = @browser.instance_eval "#{nested_frames(frame_identifiers)}image(identifier)"
402
426
  PageObject::Elements::Image.new(element, :platform => :watir)
403
427
  end
404
428
 
@@ -407,8 +431,9 @@ module PageObject
407
431
  # See PageObject::Accessors#form
408
432
  #
409
433
  def form_for(identifier)
434
+ frame_identifiers = identifier.delete(:frame)
410
435
  identifier = Elements::Form.watir_identifier_for identifier
411
- element = @browser.form(identifier)
436
+ element = @browser.instance_eval "#{nested_frames(frame_identifiers)}form(identifier)"
412
437
  PageObject::Elements::Form.new(element, :platform => :watir)
413
438
  end
414
439
 
@@ -417,9 +442,10 @@ module PageObject
417
442
  # See PageObject::Accessors#list_item
418
443
  #
419
444
  def list_item_text_for(identifier)
445
+ frame_identifiers = identifier.delete(:frame)
420
446
  identifier = add_tagname_if_needed identifier, "li"
421
447
  identifier = Elements::ListItem.watir_identifier_for identifier
422
- @browser.li(identifier).text
448
+ @browser.instance_eval "#{nested_frames(frame_identifiers)}li(identifier).text"
423
449
  end
424
450
 
425
451
  #
@@ -427,9 +453,10 @@ module PageObject
427
453
  # See PageObject::Accessors#list_item
428
454
  #
429
455
  def list_item_for(identifier)
456
+ frame_identifiers = identifier.delete(:frame)
430
457
  identifier = add_tagname_if_needed identifier, "li"
431
458
  identifier = Elements::ListItem.watir_identifier_for identifier
432
- element = @browser.li(identifier)
459
+ element = @browser.instance_eval "#{nested_frames(frame_identifiers)}li(identifier)"
433
460
  PageObject::Elements::ListItem.new(element, :platform => :watir)
434
461
  end
435
462
 
@@ -438,9 +465,10 @@ module PageObject
438
465
  # See PageObject::Accessors#unordered_list
439
466
  #
440
467
  def unordered_list_for(identifier)
468
+ frame_identifiers = identifier.delete(:frame)
441
469
  identifier = add_tagname_if_needed identifier, "ul"
442
470
  identifier = Elements::UnorderedList.watir_identifier_for identifier
443
- element = @browser.ul(identifier)
471
+ element = @browser.instance_eval "#{nested_frames(frame_identifiers)}ul(identifier)"
444
472
  PageObject::Elements::UnorderedList.new(element, :platform => :watir)
445
473
  end
446
474
 
@@ -449,9 +477,10 @@ module PageObject
449
477
  # See PageObject::Accessors#ordered_list
450
478
  #
451
479
  def ordered_list_for(identifier)
480
+ frame_identifiers = identifier.delete(:frame)
452
481
  identifier = add_tagname_if_needed identifier, "ol"
453
482
  identifier = Elements::OrderedList.watir_identifier_for identifier
454
- element = @browser.ol(identifier)
483
+ element = @browser.instance_eval "#{nested_frames(frame_identifiers)}ol(identifier)"
455
484
  PageObject::Elements::OrderedList.new(element, :platform => :watir)
456
485
  end
457
486
 
@@ -462,5 +491,16 @@ module PageObject
462
491
  identifier[:tag_name] = tag if identifier[:name]
463
492
  identifier
464
493
  end
494
+
495
+ def nested_frames(frame_identifiers)
496
+ return if frame_identifiers.nil?
497
+ frame_str = ''
498
+ frame_identifiers.each do |id|
499
+ value = id.values.first
500
+ frame_str += "frame(:#{id.keys.first} => #{value})." if value.to_s.is_integer
501
+ frame_str += "frame(:#{id.keys.first} => '#{value}')." unless value.to_s.is_integer
502
+ end
503
+ frame_str
504
+ end
465
505
  end
466
506
  end
@@ -1,4 +1,4 @@
1
1
  module PageObject
2
2
  # @private
3
- VERSION = "0.2.1"
3
+ VERSION = "0.2.2"
4
4
  end