page-object 2.2.3 → 2.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 869bfee3bb2a4b6e040dbdd45149231a865c3b95
4
- data.tar.gz: d24b805051142ebb5be29b6093071d5f6373341c
3
+ metadata.gz: 74ccca073521956e4021906e6706540428334567
4
+ data.tar.gz: 7eadfca835d4d213bca0e48662b853046ccb0c55
5
5
  SHA512:
6
- metadata.gz: 1831c81fe896bca1747c266502d57bcd9659a8da13bd28ee6731eb79506e588e0cd7634ee7851274bedf362a7618036a947094a2e0c5acee8abbaff18e3f167c
7
- data.tar.gz: 99b52bce53230897b097ea66a0748fb3d8f26d3991605980792718b969265223b38e5235512d03ab54c511b26b68ee73e89b8a99d9d7a2b5df21b8612f9aedd3
6
+ metadata.gz: 6161215bfc4fe2b236632ee4d02f6dea0cd10b52ac2ca51993cbec00df754ccdba724f3fefdc5d5cd32d7265c095603c7cf056141ff3c5c47671ecf04d065bc0
7
+ data.tar.gz: '0434932392bb13c1814e3da9685d4d20bd7d750afa468218cb66c6ae915bc8ec0ce3d98403ae0c64adad162b2905a0a0cb0a08713caf9ad0986d79bdaa705cd0'
data/ChangeLog CHANGED
@@ -1,4 +1,9 @@
1
- Version 2.2.3 / 2017-9-30
1
+ Version 2.2.4 / 2017-9-23
2
+ * Enhancements
3
+ * Added the ability to get the values of a table column (Thanks sanvijay)
4
+ * Added the ability to populate sections with a nested entry from data_magic
5
+
6
+ Version 2.2.3 / 2017-8-30
2
7
  * Enhancements
3
8
  * Added the preceding_sibling method to Element
4
9
  * Added the following_sibling method to Element
@@ -9,18 +14,18 @@ Version 2.2.3 / 2017-9-30
9
14
  * Fixes
10
15
  * Fixed issue that occurred when things were moved around in Watir 6.8
11
16
 
12
- Version 2.2.2 / 2017-9-25
17
+ Version 2.2.2 / 2017-8-25
13
18
  * Fixes
14
19
  * Fixed issue when using text for table index with special characters (Thanks Jason Phebus)
15
20
 
16
- Version 2.2.1 / 2017-9-22
21
+ Version 2.2.1 / 2017-8-22
17
22
  * Enhancements
18
23
  * Moved some functionality from PageObject to Watir (Thanks Titus Fortner)
19
24
  * Fixes
20
25
  * Fixed bug when selection option by text with populate_page_with (Thanks Jason Phebus)
21
26
  * Fixed issue with wrapping the Selenium driver with Watir (Thanks Titus Fortner)
22
27
 
23
- Version 2.2 / 2017-8-4
28
+ Version 2.2 / 2017-7-4
24
29
  * Enhancements
25
30
  * when_visible and when_not_visible now wait for element to be present before checking
26
31
  * populate_page_with can populate select_list using values (Thanks vveliev)
@@ -42,6 +42,16 @@ module PageObject
42
42
  row_items.size
43
43
  end
44
44
 
45
+ #
46
+ # Returns the Array of values(String) in a column for the index provided. Index
47
+ # is zero based. If the index provided is a String then it
48
+ # will be matched with the text from the header. The text can be a substring of the full header text.
49
+ #
50
+ def column_values(what)
51
+ idx = find_index_of_header(what)
52
+ idx && row_items.drop(1).collect { |row| row.cell(index: idx).text }
53
+ end
54
+
45
55
  protected
46
56
 
47
57
  def row_items
@@ -55,6 +65,13 @@ module PageObject
55
65
  :children
56
66
  end
57
67
 
68
+ def find_index_of_header(what)
69
+ return what if what.is_a? Integer
70
+ row_items[0].cells.find_index do |cell|
71
+ cell.text.include? Regexp.escape(what)
72
+ end
73
+ end
74
+
58
75
  def find_index(what)
59
76
  return what if what.is_a? Integer
60
77
  row_items.find_index do |row|
@@ -31,62 +31,74 @@ module PageObject
31
31
  #
32
32
  def populate_page_with(data)
33
33
  data.each do |key, value|
34
- populate_checkbox(key, value) if is_checkbox?(key) and is_enabled?(key)
35
- populate_radiobuttongroup(key, value) if is_radiobuttongroup?(key)
36
- populate_radiobutton(key, value) if is_radiobutton?(key) and is_enabled?(key)
37
- populate_select_list(key, value) if is_select_list?(key)
38
- populate_text(key, value) if is_text?(key) and is_enabled?(key)
34
+ populate_section(key, value) if value.is_a?(Hash)
35
+ populate_value(self, key, value)
39
36
  end
40
37
  end
41
38
 
42
39
  private
40
+
41
+ def populate_section(section, data)
42
+ return unless self.respond_to? section
43
+ data.each do |key, value|
44
+ populate_value(self.send(section), key, value)
45
+ end
46
+ end
47
+
48
+ def populate_value(receiver, key, value)
49
+ populate_checkbox(receiver, key, value) if is_checkbox?(receiver, key) and is_enabled?(receiver, key)
50
+ populate_radiobuttongroup(receiver, key, value) if is_radiobuttongroup?(receiver, key)
51
+ populate_radiobutton(receiver, key, value) if is_radiobutton?(receiver, key) and is_enabled?(receiver, key)
52
+ populate_select_list(receiver, key, value) if is_select_list?(receiver, key)
53
+ populate_text(receiver, key, value) if is_text?(receiver, key) and is_enabled?(receiver, key)
54
+ end
43
55
 
44
- def populate_text(key, value)
45
- self.send "#{key}=", value
56
+ def populate_text(receiver, key, value)
57
+ receiver.send "#{key}=", value
46
58
  end
47
59
 
48
- def populate_checkbox(key, value)
49
- return self.send "check_#{key}" if value
50
- return self.send "uncheck_#{key}"
60
+ def populate_checkbox(receiver, key, value)
61
+ return receiver.send "check_#{key}" if value
62
+ receiver.send "uncheck_#{key}"
51
63
  end
52
64
 
53
- def populate_radiobutton(key, value)
54
- return self.send "select_#{key}" if value
65
+ def populate_radiobutton(receiver, key, value)
66
+ receiver.send "select_#{key}" if value
55
67
  end
56
68
 
57
- def populate_radiobuttongroup(key, value)
58
- return self.send("select_#{key}", value)
69
+ def populate_radiobuttongroup(receiver, key, value)
70
+ receiver.send("select_#{key}", value)
59
71
  end
60
72
 
61
- def populate_select_list(key, value)
62
- self.send "#{key}=", value
73
+ def populate_select_list(receiver, key, value)
74
+ receiver.send "#{key}=", value
63
75
  end
64
76
 
65
- def is_text?(key)
66
- return false if is_select_list?(key)
67
- respond_to?("#{key}=".to_sym)
77
+ def is_text?(receiver, key)
78
+ return false if is_select_list?(receiver, key)
79
+ receiver.respond_to?("#{key}=".to_sym)
68
80
  end
69
81
 
70
- def is_checkbox?(key)
71
- respond_to?("check_#{key}".to_sym)
82
+ def is_checkbox?(receiver, key)
83
+ receiver.respond_to?("check_#{key}".to_sym)
72
84
  end
73
85
 
74
- def is_radiobutton?(key)
75
- respond_to?("select_#{key}".to_sym)
86
+ def is_radiobutton?(receiver, key)
87
+ receiver.respond_to?("select_#{key}".to_sym)
76
88
  end
77
89
 
78
- def is_radiobuttongroup?(key)
79
- respond_to?("select_#{key}".to_sym) and respond_to?("#{key}_values")
90
+ def is_radiobuttongroup?(receiver, key)
91
+ receiver.respond_to?("select_#{key}".to_sym) and receiver.respond_to?("#{key}_values")
80
92
  end
81
93
 
82
- def is_select_list?(key)
83
- respond_to?("#{key}_options".to_sym)
94
+ def is_select_list?(receiver, key)
95
+ receiver.respond_to?("#{key}_options".to_sym)
84
96
  end
85
97
 
86
- def is_enabled?(key)
87
- return false if is_radiobuttongroup?(key)
88
- return true if (self.send "#{key}_element").tag_name == "textarea"
89
- element = self.send("#{key}_element")
98
+ def is_enabled?(receiver, key)
99
+ return false if is_radiobuttongroup?(receiver, key)
100
+ return true if (receiver.send "#{key}_element").tag_name == "textarea"
101
+ element = receiver.send("#{key}_element")
90
102
  element.enabled? and element.visible?
91
103
  end
92
104
  end
@@ -1,4 +1,4 @@
1
1
  module PageObject
2
2
  # @private
3
- VERSION = "2.2.3"
3
+ VERSION = "2.2.4"
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: page-object
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.3
4
+ version: 2.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeff Morgan
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-08-30 00:00:00.000000000 Z
12
+ date: 2017-09-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: watir
@@ -244,7 +244,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
244
244
  version: '0'
245
245
  requirements: []
246
246
  rubyforge_project:
247
- rubygems_version: 2.6.11
247
+ rubygems_version: 2.6.13
248
248
  signing_key:
249
249
  specification_version: 4
250
250
  summary: Page Object DSL for browser testing