page-object 0.4.3 → 0.4.4

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.
data/.gitignore CHANGED
@@ -3,3 +3,4 @@ Gemfile.lock
3
3
  *.swp
4
4
  .idea/
5
5
  pkg
6
+ TAGS
data/ChangeLog CHANGED
@@ -1,3 +1,10 @@
1
+ === Version 0.4.4 / 2011-10-26
2
+ * Enhancements
3
+ * Can now find Radio buttons by value
4
+ * Updated to use selenium-webdriver 2.9.1
5
+ * Fixes
6
+ * Properly change context back to top level after interaction inside a frame with Watir
7
+
1
8
  === Version 0.4.3 / 2011-10-07
2
9
  * Enhancements
3
10
  * The new watir and selenium fix a fairly serious problem when working with modals and attaching to windows
@@ -23,6 +23,7 @@ Feature: Radio Buttons
23
23
  | class |
24
24
  | name |
25
25
  | xpath |
26
+ | value |
26
27
  | index |
27
28
 
28
29
  Scenario Outline: Locating radio buttons using multiple parameters
@@ -23,7 +23,7 @@ module PageObject
23
23
  @@browser = Watir::Browser.new :firefox if ENV['DRIVER'] == 'WATIR'
24
24
  @@browser = Selenium::WebDriver.for :firefox if ENV['DRIVER'] == 'SELENIUM'
25
25
  end
26
- return @@browser
26
+ @@browser
27
27
  end
28
28
  def self.quit
29
29
  @@browser.quit
@@ -73,6 +73,7 @@ class Page
73
73
  radio_button(:milk_name, :name => 'milk_name')
74
74
  radio_button(:milk_class, :class => 'milk_class')
75
75
  radio_button(:milk_index, :index => 0)
76
+ radio_button(:milk_value, :value => 'Milk')
76
77
  radio_button(:milk_xpath, :xpath => "//input[@type='radio']")
77
78
  radio_button(:milk_class_index, :class => "milk_class", :index => 0)
78
79
  radio_button(:milk_name_index, :name => "milk_name", :index => 0)
@@ -281,6 +281,7 @@ module PageObject
281
281
  # * :id => Watir and Selenium
282
282
  # * :index => Watir and Selenium
283
283
  # * :name => Watir and Selenium
284
+ # * :value => Watir and Selenium
284
285
  # * :xpath => Watir and Selenium
285
286
  # @param optional block to be invoked when element method is called
286
287
  #
@@ -760,7 +761,7 @@ module PageObject
760
761
  # adds a method to retrieve the text of a paragraph and a paragraph element
761
762
  #
762
763
  # @example
763
- # h6(:title, :id => 'title')
764
+ # paragraph(:title, :id => 'title')
764
765
  # # will generate a 'title' and 'title_element' method
765
766
  #
766
767
  # @param [String] the name used for the generated methods
@@ -11,6 +11,14 @@ module PageObject
11
11
 
12
12
  protected
13
13
 
14
+ def self.watir_finders
15
+ super + [:value]
16
+ end
17
+
18
+ def self.selenium_finders
19
+ super + [:value]
20
+ end
21
+
14
22
  def include_platform_for platform
15
23
  super
16
24
  if platform[:platform] == :watir_webdriver
@@ -772,6 +772,7 @@ module PageObject
772
772
  return false if identifier[:href] and tag == 'a'
773
773
  return false if identifier[:text] and ['div', 'span', 'td'].include? tag
774
774
  return false if identifier[:value] and tag == 'input' and additional[:type] == 'submit'
775
+ return false if identifier[:value] and tag == 'input' and additional[:type] == 'radio'
775
776
  true
776
777
  end
777
778
 
@@ -128,7 +128,7 @@ module PageObject
128
128
  Object::Watir::Wait.until(timeout, message, &block)
129
129
  end
130
130
 
131
- #
131
+ #
132
132
  # Send keystrokes to this element
133
133
  #
134
134
  # @param [String, Symbol, Array]
@@ -144,7 +144,9 @@ module PageObject
144
144
  #
145
145
  def text_field_value_for(identifier)
146
146
  identifier, frame_identifiers = parse_identifiers(identifier, Elements::TextField)
147
- @browser.instance_eval "#{nested_frames(frame_identifiers)}text_field(identifier).value"
147
+ value = @browser.instance_eval "#{nested_frames(frame_identifiers)}text_field(identifier).value"
148
+ switch_to_default_content(frame_identifiers)
149
+ value
148
150
  end
149
151
 
150
152
  #
@@ -154,6 +156,7 @@ module PageObject
154
156
  def text_field_value_set(identifier, value)
155
157
  identifier, frame_identifiers = parse_identifiers(identifier, Elements::TextField)
156
158
  @browser.instance_eval "#{nested_frames(frame_identifiers)}text_field(identifier).set(value)"
159
+ switch_to_default_content(frame_identifiers)
157
160
  end
158
161
 
159
162
  #
@@ -163,6 +166,7 @@ module PageObject
163
166
  def text_field_for(identifier)
164
167
  identifier, frame_identifiers = parse_identifiers(identifier, Elements::TextField)
165
168
  element = @browser.instance_eval "#{nested_frames(frame_identifiers)}text_field(identifier)"
169
+ switch_to_default_content(frame_identifiers)
166
170
  Elements::TextField.new(element, :platform => :watir_webdriver)
167
171
  end
168
172
 
@@ -172,7 +176,9 @@ module PageObject
172
176
  #
173
177
  def hidden_field_value_for(identifier)
174
178
  identifier, frame_identifiers = parse_identifiers(identifier, Elements::HiddenField)
175
- @browser.instance_eval "#{nested_frames(frame_identifiers)}hidden(identifier).value"
179
+ value = @browser.instance_eval "#{nested_frames(frame_identifiers)}hidden(identifier).value"
180
+ switch_to_default_content(frame_identifiers)
181
+ value
176
182
  end
177
183
 
178
184
  #
@@ -182,6 +188,7 @@ module PageObject
182
188
  def hidden_field_for(identifier)
183
189
  identifier, frame_identifiers = parse_identifiers(identifier, Elements::HiddenField)
184
190
  element = @browser.instance_eval "#{nested_frames(frame_identifiers)}hidden(identifier)"
191
+ switch_to_default_content(frame_identifiers)
185
192
  Elements::HiddenField.new(element, :platform => :watir_webdriver)
186
193
  end
187
194
 
@@ -192,6 +199,7 @@ module PageObject
192
199
  def text_area_value_set(identifier, value)
193
200
  identifier, frame_identifiers = parse_identifiers(identifier, Elements::TextArea)
194
201
  @browser.instance_eval "#{nested_frames(frame_identifiers)}textarea(identifier).send_keys(value)"
202
+ switch_to_default_content(frame_identifiers)
195
203
  end
196
204
 
197
205
  #
@@ -200,7 +208,9 @@ module PageObject
200
208
  #
201
209
  def text_area_value_for(identifier)
202
210
  identifier, frame_identifiers = parse_identifiers(identifier, Elements::TextArea)
203
- @browser.instance_eval "#{nested_frames(frame_identifiers)}textarea(identifier).value"
211
+ value = @browser.instance_eval "#{nested_frames(frame_identifiers)}textarea(identifier).value"
212
+ switch_to_default_content(frame_identifiers)
213
+ value
204
214
  end
205
215
 
206
216
  #
@@ -210,6 +220,7 @@ module PageObject
210
220
  def text_area_for(identifier)
211
221
  identifier, frame_identifiers = parse_identifiers(identifier, Elements::TextArea)
212
222
  element = @browser.instance_eval "#{nested_frames(frame_identifiers)}textarea(identifier)"
223
+ switch_to_default_content(frame_identifiers)
213
224
  Elements::TextArea.new(element, :platform => :watir_webdriver)
214
225
  end
215
226
 
@@ -219,7 +230,9 @@ module PageObject
219
230
  #
220
231
  def select_list_value_for(identifier)
221
232
  identifier, frame_identifiers = parse_identifiers(identifier, Elements::SelectList)
222
- @browser.instance_eval "#{nested_frames(frame_identifiers)}select_list(identifier).value"
233
+ value = @browser.instance_eval "#{nested_frames(frame_identifiers)}select_list(identifier).value"
234
+ switch_to_default_content(frame_identifiers)
235
+ value
223
236
  end
224
237
 
225
238
  #
@@ -229,6 +242,7 @@ module PageObject
229
242
  def select_list_value_set(identifier, value)
230
243
  identifier, frame_identifiers = parse_identifiers(identifier, Elements::SelectList)
231
244
  @browser.instance_eval "#{nested_frames(frame_identifiers)}select_list(identifier).select(value)"
245
+ switch_to_default_content(frame_identifiers)
232
246
  end
233
247
 
234
248
  #
@@ -238,6 +252,7 @@ module PageObject
238
252
  def select_list_for(identifier)
239
253
  identifier, frame_identifiers = parse_identifiers(identifier, Elements::SelectList)
240
254
  element = @browser.instance_eval "#{nested_frames(frame_identifiers)}select_list(identifier)"
255
+ switch_to_default_content(frame_identifiers)
241
256
  Elements::SelectList.new(element, :platform => :watir_webdriver)
242
257
  end
243
258
 
@@ -248,6 +263,7 @@ module PageObject
248
263
  def click_link_for(identifier)
249
264
  identifier, frame_identifiers = parse_identifiers(identifier, Elements::Link)
250
265
  @browser.instance_eval "#{nested_frames(frame_identifiers)}link(identifier).click if identifier"
266
+ switch_to_default_content(frame_identifiers)
251
267
  end
252
268
 
253
269
  #
@@ -257,6 +273,7 @@ module PageObject
257
273
  def link_for(identifier)
258
274
  identifier, frame_identifiers = parse_identifiers(identifier, Elements::Link)
259
275
  element = @browser.instance_eval "#{nested_frames(frame_identifiers)}link(identifier)"
276
+ switch_to_default_content(frame_identifiers)
260
277
  Elements::Link.new(element, :platform => :watir_webdriver)
261
278
  end
262
279
 
@@ -267,6 +284,7 @@ module PageObject
267
284
  def check_checkbox(identifier)
268
285
  identifier, frame_identifiers = parse_identifiers(identifier, Elements::CheckBox)
269
286
  @browser.instance_eval "#{nested_frames(frame_identifiers)}checkbox(identifier).set"
287
+ switch_to_default_content(frame_identifiers)
270
288
  end
271
289
 
272
290
  #
@@ -276,6 +294,7 @@ module PageObject
276
294
  def uncheck_checkbox(identifier)
277
295
  identifier, frame_identifiers = parse_identifiers(identifier, Elements::CheckBox)
278
296
  @browser.instance_eval "#{nested_frames(frame_identifiers)}checkbox(identifier).clear"
297
+ switch_to_default_content(frame_identifiers)
279
298
  end
280
299
 
281
300
  #
@@ -284,7 +303,9 @@ module PageObject
284
303
  #
285
304
  def checkbox_checked?(identifier)
286
305
  identifier, frame_identifiers = parse_identifiers(identifier, Elements::CheckBox)
287
- @browser.instance_eval "#{nested_frames(frame_identifiers)}checkbox(identifier).set?"
306
+ result = @browser.instance_eval "#{nested_frames(frame_identifiers)}checkbox(identifier).set?"
307
+ switch_to_default_content(frame_identifiers)
308
+ result
288
309
  end
289
310
 
290
311
  #
@@ -294,6 +315,7 @@ module PageObject
294
315
  def checkbox_for(identifier)
295
316
  identifier, frame_identifiers = parse_identifiers(identifier, Elements::CheckBox)
296
317
  element = @browser.instance_eval "#{nested_frames(frame_identifiers)}checkbox(identifier)"
318
+ switch_to_default_content(frame_identifiers)
297
319
  Elements::CheckBox.new(element, :platform => :watir_webdriver)
298
320
  end
299
321
 
@@ -304,6 +326,7 @@ module PageObject
304
326
  def select_radio(identifier)
305
327
  identifier, frame_identifiers = parse_identifiers(identifier, Elements::RadioButton)
306
328
  @browser.instance_eval "#{nested_frames(frame_identifiers)}radio(identifier).set"
329
+ switch_to_default_content(frame_identifiers)
307
330
  end
308
331
 
309
332
  #
@@ -313,6 +336,7 @@ module PageObject
313
336
  def clear_radio(identifier)
314
337
  identifier, frame_identifiers = parse_identifiers(identifier, Elements::RadioButton)
315
338
  @browser.instance_eval "#{nested_frames(frame_identifiers)}radio(identifier).clear"
339
+ switch_to_default_content(frame_identifiers)
316
340
  end
317
341
 
318
342
  #
@@ -321,7 +345,9 @@ module PageObject
321
345
  #
322
346
  def radio_selected?(identifier)
323
347
  identifier, frame_identifiers = parse_identifiers(identifier, Elements::RadioButton)
324
- @browser.instance_eval "#{nested_frames(frame_identifiers)}radio(identifier).set?"
348
+ result = @browser.instance_eval "#{nested_frames(frame_identifiers)}radio(identifier).set?"
349
+ switch_to_default_content(frame_identifiers)
350
+ result
325
351
  end
326
352
 
327
353
  #
@@ -331,7 +357,8 @@ module PageObject
331
357
  def radio_button_for(identifier)
332
358
  identifier, frame_identifiers = parse_identifiers(identifier, Elements::RadioButton)
333
359
  element = @browser.instance_eval "#{nested_frames(frame_identifiers)}radio(identifier)"
334
- Object::PageObject::Elements::RadioButton.new(element, :platform => :watir_webdriver)
360
+ switch_to_default_content(frame_identifiers)
361
+ ::PageObject::Elements::RadioButton.new(element, :platform => :watir_webdriver)
335
362
  end
336
363
 
337
364
  #
@@ -340,7 +367,9 @@ module PageObject
340
367
  #
341
368
  def div_text_for(identifier)
342
369
  identifier, frame_identifiers = parse_identifiers(identifier, Elements::Div, 'div')
343
- @browser.instance_eval "#{nested_frames(frame_identifiers)}div(identifier).text"
370
+ text = @browser.instance_eval "#{nested_frames(frame_identifiers)}div(identifier).text"
371
+ switch_to_default_content(frame_identifiers)
372
+ text
344
373
  end
345
374
 
346
375
  #
@@ -350,7 +379,8 @@ module PageObject
350
379
  def div_for(identifier)
351
380
  identifier, frame_identifiers = parse_identifiers(identifier, Elements::Div, 'div')
352
381
  element = @browser.instance_eval "#{nested_frames(frame_identifiers)}div(identifier)"
353
- Object::PageObject::Elements::Div.new(element, :platform => :watir_webdriver)
382
+ switch_to_default_content(frame_identifiers)
383
+ ::PageObject::Elements::Div.new(element, :platform => :watir_webdriver)
354
384
  end
355
385
 
356
386
  #
@@ -359,7 +389,9 @@ module PageObject
359
389
  #
360
390
  def span_text_for(identifier)
361
391
  identifier, frame_identifiers = parse_identifiers(identifier, Elements::Span, 'span')
362
- @browser.instance_eval "#{nested_frames(frame_identifiers)}span(identifier).text"
392
+ text = @browser.instance_eval "#{nested_frames(frame_identifiers)}span(identifier).text"
393
+ switch_to_default_content(frame_identifiers)
394
+ text
363
395
  end
364
396
 
365
397
  #
@@ -369,7 +401,8 @@ module PageObject
369
401
  def span_for(identifier)
370
402
  identifier, frame_identifiers = parse_identifiers(identifier, Elements::Span, 'span')
371
403
  element = @browser.instance_eval "#{nested_frames(frame_identifiers)}span(identifier)"
372
- Object::PageObject::Elements::Span.new(element, :platform => :watir_webdriver)
404
+ switch_to_default_content(frame_identifiers)
405
+ ::PageObject::Elements::Span.new(element, :platform => :watir_webdriver)
373
406
  end
374
407
 
375
408
  #
@@ -379,6 +412,7 @@ module PageObject
379
412
  def click_button_for(identifier)
380
413
  identifier, frame_identifiers = parse_identifiers(identifier, Elements::Button)
381
414
  @browser.instance_eval "#{nested_frames(frame_identifiers)}button(identifier).click"
415
+ switch_to_default_content(frame_identifiers)
382
416
  end
383
417
 
384
418
  #
@@ -388,7 +422,8 @@ module PageObject
388
422
  def button_for(identifier)
389
423
  identifier, frame_identifiers = parse_identifiers(identifier, Elements::Button)
390
424
  element = @browser.instance_eval "#{nested_frames(frame_identifiers)}button(identifier)"
391
- Object::PageObject::Elements::Button.new(element, :platform => :watir_webdriver)
425
+ switch_to_default_content(frame_identifiers)
426
+ ::PageObject::Elements::Button.new(element, :platform => :watir_webdriver)
392
427
  end
393
428
 
394
429
  #
@@ -398,7 +433,8 @@ module PageObject
398
433
  def table_for(identifier)
399
434
  identifier, frame_identifiers = parse_identifiers(identifier, Elements::Table, 'table')
400
435
  element = @browser.instance_eval "#{nested_frames(frame_identifiers)}table(identifier)"
401
- Object::PageObject::Elements::Table.new(element, :platform => :watir_webdriver)
436
+ switch_to_default_content(frame_identifiers)
437
+ ::PageObject::Elements::Table.new(element, :platform => :watir_webdriver)
402
438
  end
403
439
 
404
440
  #
@@ -407,7 +443,9 @@ module PageObject
407
443
  #
408
444
  def cell_text_for(identifier)
409
445
  identifier, frame_identifiers = parse_identifiers(identifier, Elements::TableCell, 'td')
410
- @browser.instance_eval "#{nested_frames(frame_identifiers)}td(identifier).text"
446
+ text = @browser.instance_eval "#{nested_frames(frame_identifiers)}td(identifier).text"
447
+ switch_to_default_content(frame_identifiers)
448
+ text
411
449
  end
412
450
 
413
451
  #
@@ -417,7 +455,8 @@ module PageObject
417
455
  def cell_for(identifier)
418
456
  identifier, frame_identifiers = parse_identifiers(identifier, Elements::TableCell, 'td')
419
457
  element = @browser.instance_eval "#{nested_frames(frame_identifiers)}td(identifier)"
420
- Object::PageObject::Elements::TableCell.new(element, :platform => :watir_webdriver)
458
+ switch_to_default_content(frame_identifiers)
459
+ ::PageObject::Elements::TableCell.new(element, :platform => :watir_webdriver)
421
460
  end
422
461
 
423
462
  #
@@ -427,7 +466,8 @@ module PageObject
427
466
  def image_for(identifier)
428
467
  identifier, frame_identifiers = parse_identifiers(identifier, Elements::Image)
429
468
  element = @browser.instance_eval "#{nested_frames(frame_identifiers)}image(identifier)"
430
- Object::PageObject::Elements::Image.new(element, :platform => :watir_webdriver)
469
+ switch_to_default_content(frame_identifiers)
470
+ ::PageObject::Elements::Image.new(element, :platform => :watir_webdriver)
431
471
  end
432
472
 
433
473
  #
@@ -437,7 +477,8 @@ module PageObject
437
477
  def form_for(identifier)
438
478
  identifier, frame_identifiers = parse_identifiers(identifier, Elements::Form)
439
479
  element = @browser.instance_eval "#{nested_frames(frame_identifiers)}form(identifier)"
440
- Object::PageObject::Elements::Form.new(element, :platform => :watir_webdriver)
480
+ switch_to_default_content(frame_identifiers)
481
+ ::PageObject::Elements::Form.new(element, :platform => :watir_webdriver)
441
482
  end
442
483
 
443
484
  #
@@ -446,7 +487,9 @@ module PageObject
446
487
  #
447
488
  def list_item_text_for(identifier)
448
489
  identifier, frame_identifiers = parse_identifiers(identifier, Elements::ListItem, 'li')
449
- @browser.instance_eval "#{nested_frames(frame_identifiers)}li(identifier).text"
490
+ text = @browser.instance_eval "#{nested_frames(frame_identifiers)}li(identifier).text"
491
+ switch_to_default_content(frame_identifiers)
492
+ text
450
493
  end
451
494
 
452
495
  #
@@ -456,7 +499,8 @@ module PageObject
456
499
  def list_item_for(identifier)
457
500
  identifier, frame_identifiers = parse_identifiers(identifier, Elements::ListItem, 'li')
458
501
  element = @browser.instance_eval "#{nested_frames(frame_identifiers)}li(identifier)"
459
- Object::PageObject::Elements::ListItem.new(element, :platform => :watir_webdriver)
502
+ switch_to_default_content(frame_identifiers)
503
+ ::PageObject::Elements::ListItem.new(element, :platform => :watir_webdriver)
460
504
  end
461
505
 
462
506
  #
@@ -466,7 +510,8 @@ module PageObject
466
510
  def unordered_list_for(identifier)
467
511
  identifier, frame_identifiers = parse_identifiers(identifier, Elements::UnorderedList, 'ul')
468
512
  element = @browser.instance_eval "#{nested_frames(frame_identifiers)}ul(identifier)"
469
- Object::PageObject::Elements::UnorderedList.new(element, :platform => :watir_webdriver)
513
+ switch_to_default_content(frame_identifiers)
514
+ ::PageObject::Elements::UnorderedList.new(element, :platform => :watir_webdriver)
470
515
  end
471
516
 
472
517
  #
@@ -476,7 +521,8 @@ module PageObject
476
521
  def ordered_list_for(identifier)
477
522
  identifier, frame_identifiers = parse_identifiers(identifier, Elements::OrderedList, 'ol')
478
523
  element = @browser.instance_eval "#{nested_frames(frame_identifiers)}ol(identifier)"
479
- Object::PageObject::Elements::OrderedList.new(element, :platform => :watir_webdriver)
524
+ switch_to_default_content(frame_identifiers)
525
+ ::PageObject::Elements::OrderedList.new(element, :platform => :watir_webdriver)
480
526
  end
481
527
 
482
528
  #
@@ -485,7 +531,9 @@ module PageObject
485
531
  #
486
532
  def h1_text_for(identifier)
487
533
  identifier, frame_identifiers = parse_identifiers(identifier, Elements::Heading, 'h1')
488
- @browser.instance_eval "#{nested_frames(frame_identifiers)}h1(identifier).text"
534
+ text = @browser.instance_eval "#{nested_frames(frame_identifiers)}h1(identifier).text"
535
+ switch_to_default_content(frame_identifiers)
536
+ text
489
537
  end
490
538
 
491
539
  #
@@ -495,7 +543,8 @@ module PageObject
495
543
  def h1_for(identifier)
496
544
  identifier, frame_identifiers = parse_identifiers(identifier, Elements::Heading, 'h1')
497
545
  element = @browser.instance_eval "#{nested_frames(frame_identifiers)}h1(identifier)"
498
- Object::PageObject::Elements::Heading.new(element, :platform => :watir_webdriver)
546
+ switch_to_default_content(frame_identifiers)
547
+ ::PageObject::Elements::Heading.new(element, :platform => :watir_webdriver)
499
548
  end
500
549
 
501
550
  #
@@ -504,7 +553,9 @@ module PageObject
504
553
  #
505
554
  def h2_text_for(identifier)
506
555
  identifier, frame_identifiers = parse_identifiers(identifier, Elements::Heading, 'h2')
507
- @browser.instance_eval "#{nested_frames(frame_identifiers)}h2(identifier).text"
556
+ text = @browser.instance_eval "#{nested_frames(frame_identifiers)}h2(identifier).text"
557
+ switch_to_default_content(frame_identifiers)
558
+ text
508
559
  end
509
560
 
510
561
  #
@@ -514,7 +565,8 @@ module PageObject
514
565
  def h2_for(identifier)
515
566
  identifier, frame_identifiers = parse_identifiers(identifier, Elements::Heading, 'h2')
516
567
  element = @browser.instance_eval "#{nested_frames(frame_identifiers)}h2(identifier)"
517
- Object::PageObject::Elements::Heading.new(element, :platform => :watir_webdriver)
568
+ switch_to_default_content(frame_identifiers)
569
+ ::PageObject::Elements::Heading.new(element, :platform => :watir_webdriver)
518
570
  end
519
571
 
520
572
  #
@@ -523,7 +575,9 @@ module PageObject
523
575
  #
524
576
  def h3_text_for(identifier)
525
577
  identifier, frame_identifiers = parse_identifiers(identifier, Elements::Heading, 'h3')
526
- @browser.instance_eval "#{nested_frames(frame_identifiers)}h3(identifier).text"
578
+ text = @browser.instance_eval "#{nested_frames(frame_identifiers)}h3(identifier).text"
579
+ switch_to_default_content(frame_identifiers)
580
+ text
527
581
  end
528
582
 
529
583
  #
@@ -533,7 +587,8 @@ module PageObject
533
587
  def h3_for(identifier)
534
588
  identifier, frame_identifiers = parse_identifiers(identifier, Elements::Heading, 'h3')
535
589
  element = @browser.instance_eval "#{nested_frames(frame_identifiers)}h3(identifier)"
536
- Object::PageObject::Elements::Heading.new(element, :platform => :watir_webdriver)
590
+ switch_to_default_content(frame_identifiers)
591
+ ::PageObject::Elements::Heading.new(element, :platform => :watir_webdriver)
537
592
  end
538
593
 
539
594
  #
@@ -542,7 +597,9 @@ module PageObject
542
597
  #
543
598
  def h4_text_for(identifier)
544
599
  identifier, frame_identifiers = parse_identifiers(identifier, Elements::Heading, 'h4')
545
- @browser.instance_eval "#{nested_frames(frame_identifiers)}h4(identifier).text"
600
+ text = @browser.instance_eval "#{nested_frames(frame_identifiers)}h4(identifier).text"
601
+ switch_to_default_content(frame_identifiers)
602
+ text
546
603
  end
547
604
 
548
605
  #
@@ -552,7 +609,8 @@ module PageObject
552
609
  def h4_for(identifier)
553
610
  identifier, frame_identifiers = parse_identifiers(identifier, Elements::Heading, 'h4')
554
611
  element = @browser.instance_eval "#{nested_frames(frame_identifiers)}h4(identifier)"
555
- Object::PageObject::Elements::Heading.new(element, :platform => :watir_webdriver)
612
+ switch_to_default_content(frame_identifiers)
613
+ ::PageObject::Elements::Heading.new(element, :platform => :watir_webdriver)
556
614
  end
557
615
 
558
616
  #
@@ -561,7 +619,9 @@ module PageObject
561
619
  #
562
620
  def h5_text_for(identifier)
563
621
  identifier, frame_identifiers = parse_identifiers(identifier, Elements::Heading, 'h5')
564
- @browser.instance_eval "#{nested_frames(frame_identifiers)}h5(identifier).text"
622
+ text = @browser.instance_eval "#{nested_frames(frame_identifiers)}h5(identifier).text"
623
+ switch_to_default_content(frame_identifiers)
624
+ text
565
625
  end
566
626
 
567
627
  #
@@ -571,7 +631,8 @@ module PageObject
571
631
  def h5_for(identifier)
572
632
  identifier, frame_identifiers = parse_identifiers(identifier, Elements::Heading, 'h5')
573
633
  element = @browser.instance_eval "#{nested_frames(frame_identifiers)}h5(identifier)"
574
- Object::PageObject::Elements::Heading.new(element, :platform => :watir_webdriver)
634
+ switch_to_default_content(frame_identifiers)
635
+ ::PageObject::Elements::Heading.new(element, :platform => :watir_webdriver)
575
636
  end
576
637
 
577
638
  #
@@ -580,7 +641,9 @@ module PageObject
580
641
  #
581
642
  def h6_text_for(identifier)
582
643
  identifier, frame_identifiers = parse_identifiers(identifier, Elements::Heading, 'h6')
583
- @browser.instance_eval "#{nested_frames(frame_identifiers)}h6(identifier).text"
644
+ text = @browser.instance_eval "#{nested_frames(frame_identifiers)}h6(identifier).text"
645
+ switch_to_default_content(frame_identifiers)
646
+ text
584
647
  end
585
648
 
586
649
  #
@@ -590,7 +653,8 @@ module PageObject
590
653
  def h6_for(identifier)
591
654
  identifier, frame_identifiers = parse_identifiers(identifier, Elements::Heading, 'h6')
592
655
  element = @browser.instance_eval "#{nested_frames(frame_identifiers)}h6(identifier)"
593
- Object::PageObject::Elements::Heading.new(element, :platform => :watir_webdriver)
656
+ switch_to_default_content(frame_identifiers)
657
+ ::PageObject::Elements::Heading.new(element, :platform => :watir_webdriver)
594
658
  end
595
659
 
596
660
  #
@@ -599,7 +663,9 @@ module PageObject
599
663
  #
600
664
  def paragraph_text_for(identifier)
601
665
  identifier, frame_identifiers = parse_identifiers(identifier, Elements::Heading, 'p')
602
- @browser.instance_eval "#{nested_frames(frame_identifiers)}p(identifier).text"
666
+ text = @browser.instance_eval "#{nested_frames(frame_identifiers)}p(identifier).text"
667
+ switch_to_default_content(frame_identifiers)
668
+ text
603
669
  end
604
670
 
605
671
  #
@@ -609,7 +675,8 @@ module PageObject
609
675
  def paragraph_for(identifier)
610
676
  identifier, frame_identifiers = parse_identifiers(identifier, Elements::Heading, 'p')
611
677
  element = @browser.instance_eval "#{nested_frames(frame_identifiers)}p(identifier)"
612
- Object::PageObject::Elements::Paragraph.new(element, :platform => :watir_webdriver)
678
+ switch_to_default_content(frame_identifiers)
679
+ ::PageObject::Elements::Paragraph.new(element, :platform => :watir_webdriver)
613
680
  end
614
681
 
615
682
  private
@@ -637,6 +704,10 @@ module PageObject
637
704
  end
638
705
  frame_str
639
706
  end
707
+
708
+ def switch_to_default_content(frame_identifiers)
709
+ @browser.wd.switch_to.default_content unless frame_identifiers.nil?
710
+ end
640
711
  end
641
712
  end
642
713
  end
@@ -1,4 +1,4 @@
1
1
  module PageObject
2
2
  # @private
3
- VERSION = "0.4.3"
3
+ VERSION = "0.4.4"
4
4
  end
@@ -20,11 +20,11 @@ Gem::Specification.new do |s|
20
20
  s.require_paths = ["lib"]
21
21
 
22
22
  s.add_dependency 'watir-webdriver', '>= 0.3.5'
23
- s.add_dependency 'selenium-webdriver', '>= 2.8.0'
23
+ s.add_dependency 'selenium-webdriver', '>= 2.9.1'
24
24
  s.add_dependency 'mixology'
25
25
 
26
26
  s.add_development_dependency 'rspec', '>= 2.6.0'
27
- s.add_development_dependency 'cucumber', '>= 1.0.0'
27
+ s.add_development_dependency 'cucumber', '>= 1.1.0'
28
28
  s.add_development_dependency 'yard', '>= 0.7.2'
29
29
 
30
30
  end
@@ -6,13 +6,13 @@ describe PageObject::Elements::RadioButton do
6
6
 
7
7
  describe "when mapping how to find an element" do
8
8
  it "should map watir types to same" do
9
- [:class, :id, :index, :name, :xpath].each do |t|
9
+ [:class, :id, :index, :name, :value, :xpath].each do |t|
10
10
  identifier = radiobutton.watir_identifier_for t => 'value'
11
11
  identifier.keys.first.should == t
12
12
  end
13
13
  end
14
14
  it "should map selenium types to same" do
15
- [:class, :id, :name, :xpath, :index].each do |t|
15
+ [:class, :id, :name, :xpath, :value, :index].each do |t|
16
16
  key, value = radiobutton.selenium_identifier_for t => 'value'
17
17
  key.should == t
18
18
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: page-object
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.4.3
5
+ version: 0.4.4
6
6
  platform: ruby
7
7
  authors:
8
8
  - Jeff Morgan
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-10-07 00:00:00 Z
13
+ date: 2011-10-26 00:00:00 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: watir-webdriver
@@ -31,7 +31,7 @@ dependencies:
31
31
  requirements:
32
32
  - - ">="
33
33
  - !ruby/object:Gem::Version
34
- version: 2.8.0
34
+ version: 2.9.1
35
35
  type: :runtime
36
36
  version_requirements: *id002
37
37
  - !ruby/object:Gem::Dependency
@@ -64,7 +64,7 @@ dependencies:
64
64
  requirements:
65
65
  - - ">="
66
66
  - !ruby/object:Gem::Version
67
- version: 1.0.0
67
+ version: 1.1.0
68
68
  type: :development
69
69
  version_requirements: *id005
70
70
  - !ruby/object:Gem::Dependency