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.
- data/lib/page_object_wrapper/PageObject.rb +32 -82
- data/lib/version.rb +1 -1
- data/spec/select_from_xxx_spec.rb +1 -1
- metadata +13 -13
@@ -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
|
-
|
477
|
-
|
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
|
-
|
493
|
-
|
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
|
-
|
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
|
-
|
551
|
-
|
552
|
-
|
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
|
-
|
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
|
|
data/lib/version.rb
CHANGED
@@ -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 '
|
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.
|
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: &
|
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: *
|
24
|
+
version_requirements: *15182400
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: activesupport
|
27
|
-
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: *
|
35
|
+
version_requirements: *15180620
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: babosa
|
38
|
-
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: *
|
46
|
+
version_requirements: *15179680
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rspec
|
49
|
-
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: *
|
57
|
+
version_requirements: *15177100
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: debugger
|
60
|
-
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: *
|
68
|
+
version_requirements: *15174140
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: headless
|
71
|
-
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: *
|
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:
|