page-object 0.4.3 → 0.4.4

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