page_object_wrapper 1.5.7 → 1.5.8

Sign up to get free protection for your applications and to get access to all the features.
@@ -57,7 +57,7 @@ PageObjectWrapper.define_page(:some_test_page) do
57
57
  checkbox(:cb1){
58
58
  locator :id => 'f5'
59
59
  menu :loud, true
60
- menu :quite, false
60
+ menu :quite, "false"
61
61
  }
62
62
 
63
63
  checkbox(:cb2){
@@ -384,14 +384,15 @@ module PageObjectWrapper
384
384
  watir_elements << watir_element
385
385
  case watir_element
386
386
  when Watir::CheckBox
387
- watir_element.when_present.set eval(food) if ["true", "false"].include? food
387
+ food = eval food if ['true', 'false'].include? food
388
+ watir_element.when_present.set food if [true, false].include? food
388
389
  when Watir::Radio
389
- watir_element.when_present.set if food=="true"
390
+ watir_element.when_present.set if ['true', true].include? food
390
391
  when Watir::Select
391
392
  watir_element.select food if watir_element.include? food
392
393
  else
393
394
  if watir_element.respond_to?(:set)
394
- watir_element.when_present.set food if food!=''
395
+ watir_element.when_present.set food if food != ''
395
396
  else
396
397
  # this is an element which does not support input (e.g. button) => skipping it
397
398
  next
@@ -406,11 +407,12 @@ module PageObjectWrapper
406
407
  watir_element = PageObject.return_watir_element e
407
408
  case watir_element
408
409
  when Watir::CheckBox
409
- watir_element.when_present.set value if [true, false].include? value
410
+ value = eval value if ['true', 'false'].include? value
411
+ watir_element.when_present.set value if [true, false].include? value
410
412
  when Watir::Radio
411
- watir_element.when_present.set if value==true
413
+ watir_element.when_present.set if ['true', true].include? value
412
414
  when Watir::Select
413
- watir_element.select value if watir_element.include? value
415
+ watir_element.select value if watir_element.include? value
414
416
  else
415
417
  if watir_element.respond_to?(:set)
416
418
  watir_element.when_present.set value
@@ -524,8 +526,6 @@ module PageObjectWrapper
524
526
  conditions = query.clone
525
527
  conditions.delete(:number)
526
528
  raise PageObjectWrapper::BrowserNotFound if PageObjectWrapper.browser.nil? or not PageObjectWrapper.browser.exist?
527
- PageObjectWrapper.browser.table(table.locator_value).wait_until_present
528
- t = PageObjectWrapper.browser.table(table.locator_value)
529
529
  found_row = {}
530
530
  candidate_rows = nil
531
531
  raise ArgumentError, "argument should be a meaningful Hash, got #{query.inspect}" if not query.is_a?(Hash) or query.empty?
@@ -535,15 +535,13 @@ module PageObjectWrapper
535
535
  if not conditions.empty? and (conditions.keys.collect(&:class).uniq != [Symbol] or conditions.values.collect(&:class).uniq != [String])
536
536
  raise ArgumentError, "arguments hash should be like :symbol => 'a string' (for all columns except :number), got #{query.inspect}"
537
537
  end
538
+
539
+ PageObjectWrapper.browser.table(table.locator_value).wait_until_present
540
+ t = PageObjectWrapper.browser.table(table.locator_value)
538
541
 
539
542
  if query.has_key? :number
540
- candidate_rows = [t[query[:number]]]
543
+ r = t[query[:number]]
541
544
  query.delete(:number)
542
- else
543
- candidate_rows = t.rows
544
- end
545
-
546
- candidate_rows.each{ |r|
547
545
  conditions_met = true
548
546
  unless query.empty?
549
547
  query.each_key{ |column_name|
@@ -575,7 +573,42 @@ module PageObjectWrapper
575
573
  }
576
574
  return found_row
577
575
  end
578
- }
576
+ else
577
+ t.rows.each{ |r|
578
+ conditions_met = true
579
+ unless query.empty?
580
+ query.each_key{ |column_name|
581
+ raise ArgumentError, "column #{column_name.inspect} not in table header and not == :number" if not table.header_value.include?(column_name)
582
+ column_index = table.header_value.index(column_name)
583
+ column_text = ''
584
+ # workaround for rows with small number of columns
585
+ begin
586
+ if r[column_index].checkbox.present?
587
+ column_text = r[column_index].checkbox.set?.to_s
588
+ elsif r[column_index].radio.present?
589
+ column_text = r[column_index].radio.set?.to_s
590
+ else
591
+ column_text = r[column_index].text
592
+ end
593
+ rescue Watir::Exception::UnknownObjectException
594
+ # just moving to next row
595
+ conditions_met = false
596
+ break
597
+ end
598
+ conditions_met = false if column_text != query[column_name]
599
+ }
600
+ end
601
+ if conditions_met
602
+ column_index = 0
603
+ r.cells.each{ |cell|
604
+ found_row[table.header_value[column_index]] = cell
605
+ column_index += 1
606
+ }
607
+ return found_row
608
+ end
609
+ }
610
+ end
611
+
579
612
  return nil
580
613
  end
581
614
 
data/lib/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module PageObjectWrapper
2
- VERSION = "1.5.7" unless const_defined?(:VERSION)
2
+ VERSION = "1.5.8" unless const_defined?(:VERSION)
3
3
  end
@@ -60,11 +60,19 @@ describe "page_object.feed_xxx" do
60
60
  it "FEEDS checkbox with true value" do
61
61
  @tp.feed_cb1(true)
62
62
  @b.checkbox(:id => 'f5').should be_set
63
+ @tp.feed_cb1(false)
64
+ @b.checkbox(:id => 'f5').should_not be_set
65
+ @tp.feed_cb1("true")
66
+ @b.checkbox(:id => 'f5').should be_set
67
+ @tp.feed_cb1("false")
68
+ @b.checkbox(:id => 'f5').should_not be_set
63
69
  end
64
70
 
65
71
  it "FEEDS radio with true" do
66
72
  @tp.feed_rb1(true)
67
73
  @b.radio(:id => 'f3').should be_set
74
+ @tp.feed_rb1("true")
75
+ @b.radio(:id => 'f3').should be_set
68
76
  end
69
77
 
70
78
  it "FEEDS select list if provided value exists in it" do
data/spec/spec_helper.rb CHANGED
@@ -5,10 +5,10 @@ RSpec.configure do |config|
5
5
  $headless = Headless.new
6
6
  config.before(:suite){
7
7
  PageObjectWrapper.load('./good_pages')
8
- $headless.start
8
+ #$headless.start
9
9
  }
10
10
 
11
11
  config.after( :suite ){
12
- $headless.destroy
12
+ #$headless.destroy
13
13
  }
14
14
  end
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.5.7
4
+ version: 1.5.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-07-25 00:00:00.000000000 Z
12
+ date: 2013-08-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: watir-webdriver
16
- requirement: &24301940 !ruby/object:Gem::Requirement
16
+ requirement: &8142420 !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: *24301940
24
+ version_requirements: *8142420
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: activesupport
27
- requirement: &24301200 !ruby/object:Gem::Requirement
27
+ requirement: &8141680 !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: *24301200
35
+ version_requirements: *8141680
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: babosa
38
- requirement: &24300340 !ruby/object:Gem::Requirement
38
+ requirement: &8140840 !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: *24300340
46
+ version_requirements: *8140840
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rspec
49
- requirement: &24299460 !ruby/object:Gem::Requirement
49
+ requirement: &8139880 !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: *24299460
57
+ version_requirements: *8139880
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: debugger
60
- requirement: &24298860 !ruby/object:Gem::Requirement
60
+ requirement: &8139060 !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: *24298860
68
+ version_requirements: *8139060
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: headless
71
- requirement: &24298240 !ruby/object:Gem::Requirement
71
+ requirement: &8138320 !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: *24298240
79
+ version_requirements: *8138320
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: