page_object_wrapper 1.6.0 → 1.6.1

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.
@@ -439,6 +439,21 @@ module PageObjectWrapper
439
439
  PageObjectWrapper.browser.instance_exec *args, &v.validate_block_value
440
440
  end
441
441
 
442
+ def get_cell_content cell
443
+ cell_content = rand(36**10).to_s(36)
444
+ begin
445
+ if cell.checkbox.exist?
446
+ cell_content = cell.checkbox.set?.to_s + cell.text
447
+ elsif cell.radio.exist?
448
+ cell_content = cell.radio.set?.to_s + cell.text
449
+ else
450
+ cell_content = cell.text
451
+ end
452
+ rescue Watir::Exception::UnknownObjectException
453
+ end
454
+ cell_content
455
+ end
456
+
442
457
  def select_from(table, header, *args)
443
458
  where = args[0]
444
459
  next_page = args[1]
@@ -472,34 +487,13 @@ module PageObjectWrapper
472
487
  else # finding by String or Regexp
473
488
  search_in_index = table.header_value.index(where.keys.first)
474
489
  t.rows.each{|r|
490
+ current_cell = r.cells[search_in_index]
475
491
  if search_value.is_a? String
476
- begin
477
- if r.cells[search_in_index].checkbox.present? and r.cells[search_in_index].checkbox.set?.to_s == search_value
478
- found = r.cells[search_for_index]
479
- break
480
- elsif r.cells[search_in_index].radio.present? and r.cells[search_in_index].radio.set?.to_s == search_value
481
- found = r.cells[search_for_index]
482
- break
483
- elsif r.cells[search_in_index].text == search_value
484
- found = r.cells[search_for_index]
485
- break
486
- end
487
- rescue Watir::Exception::UnknownObjectException
488
- found = nil
489
- next
490
- end
492
+ cell_content = get_cell_content current_cell
493
+ found = r.cells[search_for_index] if cell_content == search_value
491
494
  elsif search_value.is_a? Regexp
492
- begin
493
- if search_value.match(r.cells[search_in_index].text)
494
- found = r.cells[search_for_index]
495
- break
496
- end
497
- rescue Watir::Exception::UnknownObjectException
498
- found = nil
499
- next
500
- end
501
- else
502
- raise ArgumentError, "#{search_value} not a Regexp or String"
495
+ cell_content = get_cell_content current_cell
496
+ found = r.cells[search_for_index] if search_value.match cell_content
503
497
  end
504
498
  }
505
499
  end
@@ -526,6 +520,8 @@ module PageObjectWrapper
526
520
  conditions = query.clone
527
521
  conditions.delete(:number)
528
522
  raise PageObjectWrapper::BrowserNotFound if PageObjectWrapper.browser.nil? or not PageObjectWrapper.browser.exist?
523
+ t = PageObject.return_watir_element table
524
+ t.wait_until_present
529
525
  found_row = {}
530
526
  candidate_rows = nil
531
527
  raise ArgumentError, "argument should be a meaningful Hash, got #{query.inspect}" if not query.is_a?(Hash) or query.empty?
@@ -535,34 +531,25 @@ module PageObjectWrapper
535
531
  if not conditions.empty? and (conditions.keys.collect(&:class).uniq != [Symbol] or conditions.values.collect(&:class).uniq != [String])
536
532
  raise ArgumentError, "arguments hash should be like :symbol => 'a string' (for all columns except :number), got #{query.inspect}"
537
533
  end
538
-
539
- t = PageObject.return_watir_element table
540
- t.wait_until_present
541
534
 
542
535
  if query.has_key? :number
543
- r = t[query[:number]]
536
+ candidate_rows = [t[query[:number]]]
544
537
  query.delete(:number)
538
+ else
539
+ candidate_rows = t.rows
540
+ end
541
+
542
+ candidate_rows.each{ |r|
545
543
  conditions_met = true
546
544
  unless query.empty?
547
545
  query.each_key{ |column_name|
548
546
  raise ArgumentError, "column #{column_name.inspect} not in table header and not == :number" if not table.header_value.include?(column_name)
549
547
  column_index = table.header_value.index(column_name)
550
- column_text = ''
551
- # workaround for rows with small number of columns
552
- begin
553
- if r[column_index].checkbox.present?
554
- column_text = r[column_index].checkbox.set?.to_s
555
- elsif r[column_index].radio.present?
556
- column_text = r[column_index].radio.set?.to_s
557
- else
558
- column_text = r[column_index].text
559
- end
560
- rescue Watir::Exception::UnknownObjectException
561
- # just moving to next row
562
- conditions_met = false
548
+ current_cell = r[column_index]
549
+ unless get_cell_content(current_cell) =~ /#{query[column_name]}/
550
+ conditions_met = false
563
551
  break
564
552
  end
565
- conditions_met = false if not column_text =~ /#{query[column_name]}/
566
553
  }
567
554
  end
568
555
  if conditions_met
@@ -573,44 +560,7 @@ module PageObjectWrapper
573
560
  }
574
561
  return found_row
575
562
  end
576
- else
577
- t.wait_until_present
578
- t.rows.each{ |r|
579
- r.wait_until_present
580
- conditions_met = true
581
- unless query.empty?
582
- query.each_key{ |column_name|
583
- raise ArgumentError, "column #{column_name.inspect} not in table header and not == :number" if not table.header_value.include?(column_name)
584
- column_index = table.header_value.index(column_name)
585
- column_text = ''
586
- # workaround for rows with small number of columns
587
- begin
588
- if r[column_index].checkbox.present?
589
- column_text = r[column_index].checkbox.set?.to_s
590
- elsif r[column_index].radio.present?
591
- column_text = r[column_index].radio.set?.to_s
592
- else
593
- column_text = r[column_index].text
594
- end
595
- rescue Watir::Exception::UnknownObjectException
596
- # just moving to next row
597
- conditions_met = false
598
- break
599
- end
600
- conditions_met = false if not column_text =~ /#{query[column_name]}/
601
- }
602
- end
603
- if conditions_met
604
- column_index = 0
605
- r.cells.each{ |cell|
606
- found_row[table.header_value[column_index]] = cell
607
- column_index += 1
608
- }
609
- return found_row
610
- end
611
- }
612
- end
613
-
563
+ }
614
564
  return nil
615
565
  end
616
566
 
@@ -1,3 +1,3 @@
1
1
  module PageObjectWrapper
2
- VERSION = "1.6.0" unless const_defined?(:VERSION)
2
+ VERSION = "1.6.1" unless const_defined?(:VERSION)
3
3
  end
@@ -76,7 +76,7 @@ describe "page_object.select_from_xxx" do
76
76
  it "returns found cells" do
77
77
  tp.select_from_table_without_header(:column_1, :column_1 => '103,000').text.should eq '103,000'
78
78
  tp.select_from_table_with_header(:checkbox, :total_area => '324,220').checkbox.should be_checked
79
- tp.select_from_table_with_header(:country, :checkbox => 'false').text.should eq 'Denmark' # last found row
79
+ tp.select_from_table_with_header(:country, :checkbox => 'false').text.should eq 'Sweden' # last found row
80
80
  tp.select_from_table_with_header(:country, :checkbox => 'true').text.should eq 'Norway'
81
81
  end
82
82
  it "returns nil" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: page_object_wrapper
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.0
4
+ version: 1.6.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2013-08-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: watir-webdriver
16
- requirement: &24300100 !ruby/object:Gem::Requirement
16
+ requirement: &15182400 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *24300100
24
+ version_requirements: *15182400
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: activesupport
27
- requirement: &24299560 !ruby/object:Gem::Requirement
27
+ requirement: &15180620 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *24299560
35
+ version_requirements: *15180620
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: babosa
38
- requirement: &24299020 !ruby/object:Gem::Requirement
38
+ requirement: &15179680 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *24299020
46
+ version_requirements: *15179680
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rspec
49
- requirement: &24298380 !ruby/object:Gem::Requirement
49
+ requirement: &15177100 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 2.0.0
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *24298380
57
+ version_requirements: *15177100
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: debugger
60
- requirement: &24297780 !ruby/object:Gem::Requirement
60
+ requirement: &15174140 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *24297780
68
+ version_requirements: *15174140
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: headless
71
- requirement: &24297100 !ruby/object:Gem::Requirement
71
+ requirement: &15170740 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,7 +76,7 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *24297100
79
+ version_requirements: *15170740
80
80
  description: Wraps watir-webdriver with convenient testing interface, based on PageObjects
81
81
  automation testing pattern. Simplifies resulting automated test understanding.
82
82
  email: