Class: TestCentricity::PageSection
- Includes:
- Capybara::DSL, Capybara::Node::Matchers, RSpec::Matchers, Test::Unit::Assertions
- Defined in:
- lib/testcentricity_web/page_sections_helper.rb
Instance Attribute Summary collapse
-
#context ⇒ Object
readonly
Returns the value of attribute context.
-
#locator ⇒ Object
readonly
Returns the value of attribute locator.
-
#parent ⇒ Object
Returns the value of attribute parent.
Class Method Summary collapse
- .button(element_name, locator) ⇒ Object
- .checkbox(element_name, locator) ⇒ Object
- .element(element_name, locator) ⇒ Object
- .image(element_name, locator) ⇒ Object
- .label(element_name, locator) ⇒ Object
- .link(element_name, locator) ⇒ Object
- .section(section_name, class_name, locator = nil) ⇒ Object
- .selectlist(element_name, locator) ⇒ Object
- .table(element_name, locator) ⇒ Object
- .textfield(element_name, locator) ⇒ Object
- .trait(trait_name, &block) ⇒ Object
Instance Method Summary collapse
- #exists? ⇒ Boolean
- #get_locator ⇒ Object
- #hidden? ⇒ Boolean
-
#initialize(parent, locator, context) ⇒ PageSection
constructor
A new instance of PageSection.
- #set_parent(parent) ⇒ Object
- #verify_ui_states(ui_states) ⇒ Object
- #visible? ⇒ Boolean
- #wait_until_exists(seconds) ⇒ Object
- #wait_until_gone(seconds) ⇒ Object
Constructor Details
#initialize(parent, locator, context) ⇒ PageSection
Returns a new instance of PageSection.
11 12 13 14 15 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 11 def initialize(parent, locator, context) @parent = parent @locator = locator @context = context end |
Instance Attribute Details
#context ⇒ Object (readonly)
Returns the value of attribute context.
8 9 10 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 8 def context @context end |
#locator ⇒ Object (readonly)
Returns the value of attribute locator.
8 9 10 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 8 def locator @locator end |
#parent ⇒ Object
Returns the value of attribute parent.
9 10 11 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 9 def parent @parent end |
Class Method Details
.button(element_name, locator) ⇒ Object
25 26 27 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 25 def self.(element_name, locator) class_eval(%Q(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::UIElement.new(self, "#{locator}", :section, :button);end)) end |
.checkbox(element_name, locator) ⇒ Object
33 34 35 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 33 def self.checkbox(element_name, locator) class_eval(%Q(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::UIElement.new(self, "#{locator}", :section, :checkbox);end)) end |
.element(element_name, locator) ⇒ Object
21 22 23 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 21 def self.element(element_name, locator) class_eval(%Q(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::UIElement.new(self, "#{locator}", :section, nil);end)) end |
.image(element_name, locator) ⇒ Object
53 54 55 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 53 def self.image(element_name, locator) class_eval(%Q(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::UIElement.new(self, "#{locator}", :section, :image);end)) end |
.label(element_name, locator) ⇒ Object
37 38 39 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 37 def self.label(element_name, locator) class_eval(%Q(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::UIElement.new(self, "#{locator}", :section, :label);end)) end |
.link(element_name, locator) ⇒ Object
41 42 43 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 41 def self.link(element_name, locator) class_eval(%Q(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::UIElement.new(self, "#{locator}", :section, :link);end)) end |
.section(section_name, class_name, locator = nil) ⇒ Object
57 58 59 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 57 def self.section(section_name, class_name, locator = nil) class_eval(%Q(def #{section_name.to_s};@#{section_name.to_s} ||= #{class_name.to_s}.new(self, "#{locator}", :section);end)) end |
.selectlist(element_name, locator) ⇒ Object
49 50 51 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 49 def self.selectlist(element_name, locator) class_eval(%Q(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::UIElement.new(self, "#{locator}", :section, :selectlist);end)) end |
.table(element_name, locator) ⇒ Object
45 46 47 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 45 def self.table(element_name, locator) class_eval(%Q(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::UIElement.new(self, "#{locator}", :section, :table);end)) end |
.textfield(element_name, locator) ⇒ Object
29 30 31 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 29 def self.textfield(element_name, locator) class_eval(%Q(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::UIElement.new(self, "#{locator}", :section, :textfield);end)) end |
.trait(trait_name, &block) ⇒ Object
17 18 19 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 17 def self.trait(trait_name, &block) define_method(trait_name.to_s, &block) end |
Instance Method Details
#exists? ⇒ Boolean
70 71 72 73 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 70 def exists? section, _ = find_section section != nil end |
#get_locator ⇒ Object
61 62 63 64 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 61 def get_locator (@locator.empty? && defined?(section_locator)) ? locator = section_locator : locator = @locator (@context == :section && !@parent.nil? && !@parent.get_locator.nil?) ? "#{@parent.get_locator}#{locator}" : locator end |
#hidden? ⇒ Boolean
95 96 97 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 95 def hidden? not visible? end |
#set_parent(parent) ⇒ Object
66 67 68 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 66 def set_parent(parent) @parent = parent end |
#verify_ui_states(ui_states) ⇒ Object
115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 115 def verify_ui_states(ui_states) ui_states.each do | ui_object, object_states | object_states.each do | property, state | case property when :exists actual = ui_object.exists? when :enabled actual = ui_object.enabled? when :visible actual = ui_object.visible? when :readonly actual = ui_object.read_only? when :checked actual = ui_object.checked? when :value actual = ui_object.get_value when :maxlength actual = ui_object.get_max_length when :options actual = ui_object. when :siebel_options actual = ui_object. else if property.to_s.start_with? ('cell_') cell = property.to_s.gsub('cell_', '') cell = cell.split('_') actual = ui_object.get_table_cell(cell[0].to_i, cell[1].to_i) end end ExceptionQueue.enqueue_assert_equal(state, actual, "Expected #{ui_object.get_locator} #{property.to_s} property") end end ExceptionQueue.post_exceptions end |
#visible? ⇒ Boolean
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 75 def visible? section, type = find_section exists = section invisible = false if type == :css .using_wait_time 0.1 do # is section itself hidden with .ui-helper-hidden class? self_hidden = page.has_css?("#{@locator}.ui-helper-hidden") # is parent of section hidden, thus hiding the section? parent_hidden = page.has_css?(".ui-helper-hidden > #{@locator}") # is grandparent of section, or any other ancestor, hidden? other_ancestor_hidden = page.has_css?(".ui-helper-hidden * #{@locator}") # if any of the above conditions are true, then section is invisible invisible = self_hidden || parent_hidden || other_ancestor_hidden end end # the section is visible if it exists and it is not invisible (exists && !invisible) ? true : false end |
#wait_until_exists(seconds) ⇒ Object
99 100 101 102 103 104 105 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 99 def wait_until_exists(seconds) timeout = seconds.nil? ? .default_max_wait_time : seconds wait = Selenium::WebDriver::Wait.new(timeout: timeout) wait.until { exists? } rescue raise "Could not find section #{get_locator} after #{timeout} seconds" unless exists? end |
#wait_until_gone(seconds) ⇒ Object
107 108 109 110 111 112 113 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 107 def wait_until_gone(seconds) timeout = seconds.nil? ? .default_max_wait_time : seconds wait = Selenium::WebDriver::Wait.new(timeout: timeout) wait.until { !exists? } rescue raise "Section #{get_locator} remained visible after #{timeout} seconds" if exists? end |