Class: TestCentricity::PageSection
- Includes:
- Capybara::DSL, Capybara::Node::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
Declare and instantiate a button UI Element for this page section.
-
.buttons(element_hash) ⇒ Object
Declare and instantiate a collection of buttons for this page section.
-
.checkbox(element_name, locator, proxy = nil) ⇒ Object
Declare and instantiate a checkbox UI Element for this page section.
-
.checkboxes(element_hash) ⇒ Object
Declare and instantiate a collection of checkboxes for this page section.
-
.element(element_name, locator) ⇒ Object
Declare and instantiate a generic UI Element for this page section.
-
.elements(element_hash) ⇒ Object
Declare and instantiate a collection of generic UI Elements for this page section.
-
.filefield(element_name, locator) ⇒ Object
Declare and instantiate a File Field UI Element for this page section.
-
.image(element_name, locator) ⇒ Object
Declare and instantiate an image UI Element for this page section.
- .images(element_hash) ⇒ Object
-
.label(element_name, locator) ⇒ Object
Declare and instantiate a label UI Element for this page section.
- .labels(element_hash) ⇒ Object
-
.link(element_name, locator) ⇒ Object
Declare and instantiate a link UI Element for this page section.
- .links(element_hash) ⇒ Object
-
.list(element_name, locator) ⇒ Object
Declare and instantiate a list UI Element for this page section.
- .lists(element_hash) ⇒ Object
-
.radio(element_name, locator, proxy = nil) ⇒ Object
Declare and instantiate a radio button UI Element for this page section.
-
.radios(element_hash) ⇒ Object
Declare and instantiate a collection of radio buttons for this page section.
-
.section(section_name, class_name, locator = nil) ⇒ Object
Instantiate a PageSection object within this PageSection object.
- .sections(section_hash) ⇒ Object
-
.selectlist(element_name, locator) ⇒ Object
Declare and instantiate a select list UI Element for this page section.
- .selectlists(element_hash) ⇒ Object
-
.table(element_name, locator) ⇒ Object
Declare and instantiate a table UI Element for this page section.
- .tables(element_hash) ⇒ Object
-
.textfield(element_name, locator) ⇒ Object
Declare and instantiate a text field UI Element for this page section.
-
.textfields(element_hash) ⇒ Object
Declare and instantiate a collection of text fields for this page section.
-
.trait(trait_name, &block) ⇒ Object
Define a trait for this page section.
Instance Method Summary collapse
-
#click_at(x, y) ⇒ Object
Click at a specific location within a Section object.
-
#disabled? ⇒ Boolean
Is Section object disabled (not enabled)?.
-
#enabled? ⇒ Boolean
Is Section object enabled?.
-
#exists? ⇒ Boolean
Does Section object exists?.
- #get_attribute(attrib) ⇒ Object
- #get_locator ⇒ Object
- #get_native_attribute(attrib) ⇒ Object
-
#hidden? ⇒ Boolean
Is Section object hidden (not visible)?.
-
#initialize(parent, locator, context) ⇒ PageSection
constructor
A new instance of PageSection.
-
#populate_data_fields(data) ⇒ Object
Populate the specified UI elements in this Section object with the associated data from a Hash passed as an argument.
- #set_parent(parent) ⇒ Object
- #verify_ui_states(ui_states) ⇒ Object
-
#visible? ⇒ Boolean
Is Section object visible?.
-
#wait_until_exists(seconds = nil) ⇒ Object
Wait until the Section object exists, or until the specified wait time has expired.
-
#wait_until_gone(seconds = nil) ⇒ Object
Wait until the Section object no longer exists, or until the specified wait time has expired.
-
#wait_until_hidden(seconds = nil) ⇒ Object
Wait until the Section object is hidden, or until the specified wait time has expired.
-
#wait_until_visible(seconds = nil) ⇒ Object
Wait until the Section object is visible, or until the specified wait time has expired.
Constructor Details
#initialize(parent, locator, context) ⇒ PageSection
Returns a new instance of PageSection.
12 13 14 15 16 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 12 def initialize(parent, locator, context) @parent = parent @locator = locator @context = context end |
Instance Attribute Details
#context ⇒ Object (readonly)
Returns the value of attribute context.
9 10 11 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 9 def context @context end |
#locator ⇒ Object (readonly)
Returns the value of attribute locator.
9 10 11 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 9 def locator @locator end |
#parent ⇒ Object
Returns the value of attribute parent.
10 11 12 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 10 def parent @parent end |
Class Method Details
.button(element_name, locator) ⇒ Object
Declare and instantiate a button UI Element for this page section.
64 65 66 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 64 def self.(element_name, locator) class_eval(%Q(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::Button.new(self, "#{locator}", :section);end)) end |
.buttons(element_hash) ⇒ Object
Declare and instantiate a collection of buttons for this page section.
76 77 78 79 80 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 76 def self.(element_hash) element_hash.each do |element_name, locator| (element_name, locator) end end |
.checkbox(element_name, locator, proxy = nil) ⇒ Object
Declare and instantiate a checkbox UI Element for this page section.
119 120 121 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 119 def self.checkbox(element_name, locator, proxy = nil) class_eval(%Q(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::CheckBox.new(self, "#{locator}", :section, #{proxy});end)) end |
.checkboxes(element_hash) ⇒ Object
Declare and instantiate a collection of checkboxes for this page section.
132 133 134 135 136 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 132 def self.checkboxes(element_hash) element_hash.each do |element_name, locator| checkbox(element_name, locator) end end |
.element(element_name, locator) ⇒ Object
Declare and instantiate a generic UI Element for this page section.
38 39 40 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 38 def self.element(element_name, locator) class_eval(%Q(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::UIElement.new(self, "#{locator}", :section);end)) end |
.elements(element_hash) ⇒ Object
Declare and instantiate a collection of generic UI Elements for this page section.
50 51 52 53 54 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 50 def self.elements(element_hash) element_hash.each do |element_name, locator| element(element_name, locator) end end |
.filefield(element_name, locator) ⇒ Object
Declare and instantiate a File Field UI Element for this page section.
279 280 281 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 279 def self.filefield(element_name, locator) class_eval(%Q(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::FileField.new(self, "#{locator}", :section);end)) end |
.image(element_name, locator) ⇒ Object
Declare and instantiate an image UI Element for this page section.
262 263 264 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 262 def self.image(element_name, locator) class_eval(%Q(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::Image.new(self, "#{locator}", :section);end)) end |
.images(element_hash) ⇒ Object
266 267 268 269 270 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 266 def self.images(element_hash) element_hash.each do |element_name, locator| image(element_name, locator) end end |
.label(element_name, locator) ⇒ Object
Declare and instantiate a label UI Element for this page section.
174 175 176 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 174 def self.label(element_name, locator) class_eval(%Q(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::Label.new(self, "#{locator}", :section);end)) end |
.labels(element_hash) ⇒ Object
178 179 180 181 182 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 178 def self.labels(element_hash) element_hash.each do |element_name, locator| label(element_name, locator) end end |
.link(element_name, locator) ⇒ Object
Declare and instantiate a link UI Element for this page section.
192 193 194 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 192 def self.link(element_name, locator) class_eval(%Q(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::Link.new(self, "#{locator}", :section);end)) end |
.links(element_hash) ⇒ Object
196 197 198 199 200 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 196 def self.links(element_hash) element_hash.each do |element_name, locator| link(element_name, locator) end end |
.list(element_name, locator) ⇒ Object
Declare and instantiate a list UI Element for this page section.
244 245 246 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 244 def self.list(element_name, locator) class_eval(%Q(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::List.new(self, "#{locator}", :section);end)) end |
.lists(element_hash) ⇒ Object
248 249 250 251 252 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 248 def self.lists(element_hash) element_hash.each do |element_name, locator| list(element_name, locator) end end |
.radio(element_name, locator, proxy = nil) ⇒ Object
Declare and instantiate a radio button UI Element for this page section.
147 148 149 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 147 def self.radio(element_name, locator, proxy = nil) class_eval(%Q(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::Radio.new(self, "#{locator}", :section, #{proxy});end)) end |
.radios(element_hash) ⇒ Object
Declare and instantiate a collection of radio buttons for this page section.
160 161 162 163 164 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 160 def self.radios(element_hash) element_hash.each do |element_name, locator| radio(element_name, locator) end end |
.section(section_name, class_name, locator = nil) ⇒ Object
Instantiate a PageSection object within this PageSection object.
290 291 292 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 290 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 |
.sections(section_hash) ⇒ Object
294 295 296 297 298 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 294 def self.sections(section_hash) section_hash.each do |section_name, class_name| section(section_name, class_name) end end |
.selectlist(element_name, locator) ⇒ Object
Declare and instantiate a select list UI Element for this page section.
227 228 229 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 227 def self.selectlist(element_name, locator) class_eval(%Q(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::SelectList.new(self, "#{locator}", :section);end)) end |
.selectlists(element_hash) ⇒ Object
231 232 233 234 235 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 231 def self.selectlists(element_hash) element_hash.each do |element_name, locator| selectlist(element_name, locator) end end |
.table(element_name, locator) ⇒ Object
Declare and instantiate a table UI Element for this page section.
209 210 211 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 209 def self.table(element_name, locator) class_eval(%Q(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::Table.new(self, "#{locator}", :section);end)) end |
.tables(element_hash) ⇒ Object
213 214 215 216 217 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 213 def self.tables(element_hash) element_hash.each do |element_name, locator| table(element_name, locator) end end |
.textfield(element_name, locator) ⇒ Object
Declare and instantiate a text field UI Element for this page section.
90 91 92 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 90 def self.textfield(element_name, locator) class_eval(%Q(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::TextField.new(self, "#{locator}", :section);end)) end |
.textfields(element_hash) ⇒ Object
Declare and instantiate a collection of text fields for this page section.
104 105 106 107 108 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 104 def self.textfields(element_hash) element_hash.each do |element_name, locator| textfield(element_name, locator) end end |
.trait(trait_name, &block) ⇒ Object
Define a trait for this page section.
26 27 28 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 26 def self.trait(trait_name, &block) define_method(trait_name.to_s, &block) end |
Instance Method Details
#click_at(x, y) ⇒ Object
Click at a specific location within a Section object
430 431 432 433 434 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 430 def click_at(x, y) section, _ = find_section raise "Section #{get_locator} not found" unless section section.click_at(x, y) end |
#disabled? ⇒ Boolean
Is Section object disabled (not enabled)?
336 337 338 339 340 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 336 def disabled? obj, _ = find_element object_not_found_exception(obj, nil) obj.disabled? end |
#enabled? ⇒ Boolean
Is Section object enabled?
326 327 328 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 326 def enabled? not disabled? end |
#exists? ⇒ Boolean
Does Section object exists?
315 316 317 318 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 315 def exists? section, _ = find_section section != nil end |
#get_attribute(attrib) ⇒ Object
560 561 562 563 564 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 560 def get_attribute(attrib) section, _ = find_section raise "Section #{locator} not found" unless section section[attrib] end |
#get_locator ⇒ Object
300 301 302 303 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 300 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 |
#get_native_attribute(attrib) ⇒ Object
566 567 568 569 570 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 566 def get_native_attribute(attrib) section, _ = find_section raise "Section #{locator} not found" unless section section.native.attribute(attrib) end |
#hidden? ⇒ Boolean
Is Section object hidden (not visible)?
363 364 365 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 363 def hidden? not visible? end |
#populate_data_fields(data) ⇒ Object
Populate the specified UI elements in this Section object with the associated data from a Hash passed as an argument. Data values must be in the form of a String for textfield and select list controls. For checkbox and radio buttons, data must either be a Boolean or a String that evaluates to a Boolean value (Yes, No, 1, 0, true, false)
533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 533 def populate_data_fields(data) data.each do | data_field, data_param | unless data_param.blank? # make sure the intended UI target element exists before trying to set its value data_field.wait_until_exists(2) if data_param == '!DELETE' data_field.set('') else case data_field.get_object_type when :checkbox (data_field.get_siebel_object_type == 'JCheckBox') ? data_field.set_siebel_checkbox_state(data_param.to_bool) : data_field.set_checkbox_state(data_param.to_bool) when :selectlist (data_field.get_siebel_object_type == 'JComboBox') ? data_field.set("#{data_param}\t") : data_field.choose_option(data_param) when :radio data_field.set_selected_state(data_param.to_bool) when :textfield data_field.set("#{data_param}\t") end end end end end |
#set_parent(parent) ⇒ Object
305 306 307 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 305 def set_parent(parent) @parent = parent end |
#verify_ui_states(ui_states) ⇒ Object
436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 436 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 :disabled actual = ui_object.disabled? when :visible actual = ui_object.visible? when :hidden actual = ui_object.hidden? when :readonly actual = ui_object.read_only? when :checked actual = ui_object.checked? when :selected actual = ui_object.selected? when :value, :caption actual = ui_object.get_value when :maxlength actual = ui_object.get_max_length when :rowcount actual = ui_object.get_row_count when :columncount actual = ui_object.get_column_count when :placeholder actual = ui_object.get_placeholder when :options, :items, :list_items actual = ui_object.get_list_items when :optioncount, :itemcount actual = ui_object.get_item_count when :column_headers actual = ui_object.get_header_columns 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) elsif property.to_s.start_with? ('row_') row = property.to_s.gsub('row_', '') actual = ui_object.get_table_row(row.to_i) elsif property.to_s.start_with? ('column_') column = property.to_s.gsub('column_', '') actual = ui_object.get_table_column(column.to_i) end end if state.is_a?(Hash) && state.length == 1 error_msg = "Expected #{ui_object.get_locator} #{property.to_s} property to" state.each do |key, value| case key when :lt, :less_than ExceptionQueue.enqueue_exception("#{error_msg} be less than #{value} but found #{actual}") unless actual < value when :lt_eq, :less_than_or_equal ExceptionQueue.enqueue_exception("#{error_msg} be less than or equal to #{value} but found #{actual}") unless actual <= value when :gt, :greater_than ExceptionQueue.enqueue_exception("#{error_msg} be greater than #{value} but found #{actual}") unless actual > value when :gt_eq, :greater_than_or_equal ExceptionQueue.enqueue_exception("#{error_msg} be greater than or equal to #{value} but found #{actual}") unless actual >= value when :starts_with ExceptionQueue.enqueue_exception("#{error_msg} start with '#{value}' but found #{actual}") unless actual.start_with?(value) when :ends_with ExceptionQueue.enqueue_exception("#{error_msg} end with '#{value}' but found #{actual}") unless actual.end_with?(value) when :contains ExceptionQueue.enqueue_exception("#{error_msg} contain '#{value}' but found #{actual}") unless actual.include?(value) end end else ExceptionQueue.enqueue_assert_equal(state, actual, "Expected #{ui_object.get_locator} #{property.to_s} property") end end end ExceptionQueue.post_exceptions end |
#visible? ⇒ Boolean
Is Section object visible?
348 349 350 351 352 353 354 355 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 348 def visible? section, _ = find_section exists = section visible = false visible = section.visible? if exists # the section is visible if it exists and it is not invisible (exists && visible) ? true : false end |
#wait_until_exists(seconds = nil) ⇒ Object
Wait until the Section object exists, or until the specified wait time has expired.
373 374 375 376 377 378 379 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 373 def wait_until_exists(seconds = nil) timeout = seconds.nil? ? Capybara.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 = nil) ⇒ Object
Wait until the Section object no longer exists, or until the specified wait time has expired.
387 388 389 390 391 392 393 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 387 def wait_until_gone(seconds = nil) timeout = seconds.nil? ? Capybara.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 |
#wait_until_hidden(seconds = nil) ⇒ Object
Wait until the Section object is hidden, or until the specified wait time has expired.
415 416 417 418 419 420 421 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 415 def wait_until_hidden(seconds = nil) timeout = seconds.nil? ? Capybara.default_max_wait_time : seconds wait = Selenium::WebDriver::Wait.new(timeout: timeout) wait.until { hidden? } rescue raise "section #{get_locator} remained visible after #{timeout} seconds" if visible? end |
#wait_until_visible(seconds = nil) ⇒ Object
Wait until the Section object is visible, or until the specified wait time has expired.
401 402 403 404 405 406 407 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 401 def wait_until_visible(seconds = nil) timeout = seconds.nil? ? Capybara.default_max_wait_time : seconds wait = Selenium::WebDriver::Wait.new(timeout: timeout) wait.until { visible? } rescue raise "Could not find section #{get_locator} after #{timeout} seconds" unless visible? end |