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.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#parent ⇒ Object
Returns the value of attribute parent.
Class Method Summary collapse
-
.button(element_name, locator) ⇒ Object
Declare and instantiate a single 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 single 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 single 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 single File Field UI Element for this page section.
-
.image(element_name, locator) ⇒ Object
Declare and instantiate an single image UI Element for this page section.
- .images(element_hash) ⇒ Object
-
.label(element_name, locator) ⇒ Object
Declare and instantiate a single label UI Element for this page section.
- .labels(element_hash) ⇒ Object
-
.link(element_name, locator) ⇒ Object
Declare and instantiate a single link UI Element for this page section.
- .links(element_hash) ⇒ Object
-
.list(element_name, locator) ⇒ Object
Declare and instantiate a single list UI Element for this page section.
- .lists(element_hash) ⇒ Object
-
.radio(element_name, locator, proxy = nil) ⇒ Object
Declare and instantiate a single 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 single PageSection object within this PageSection object.
- .sections(section_hash) ⇒ Object
-
.selectlist(element_name, locator) ⇒ Object
Declare and instantiate a single select list UI Element for this page section.
- .selectlists(element_hash) ⇒ Object
-
.table(element_name, locator) ⇒ Object
Declare and instantiate a single table UI Element for this page section.
- .tables(element_hash) ⇒ Object
-
.textfield(element_name, locator) ⇒ Object
Declare and instantiate a single 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_name ⇒ Object
- #get_native_attribute(attrib) ⇒ Object
-
#hidden? ⇒ Boolean
Is Section object hidden (not visible)?.
-
#initialize(name, 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(name, parent, locator, context) ⇒ PageSection
Returns a new instance of PageSection.
12 13 14 15 16 17 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 12 def initialize(name, parent, locator, context) @name = name @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 |
#name ⇒ Object (readonly)
Returns the value of attribute name.
9 10 11 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 9 def name @name 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 single button UI Element for this page section.
65 66 67 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 65 def self.(element_name, locator) class_eval(%Q(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::Button.new("#{element_name}", self, "#{locator}", :section);end)) end |
.buttons(element_hash) ⇒ Object
Declare and instantiate a collection of buttons for this page section.
77 78 79 80 81 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 77 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 single checkbox UI Element for this page section.
120 121 122 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 120 def self.checkbox(element_name, locator, proxy = nil) class_eval(%Q(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::CheckBox.new("#{element_name}", self, "#{locator}", :section, #{proxy});end)) end |
.checkboxes(element_hash) ⇒ Object
Declare and instantiate a collection of checkboxes for this page section.
133 134 135 136 137 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 133 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 single generic UI Element for this page section.
39 40 41 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 39 def self.element(element_name, locator) class_eval(%Q(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::UIElement.new("#{element_name}", self, "#{locator}", :section);end)) end |
.elements(element_hash) ⇒ Object
Declare and instantiate a collection of generic UI Elements for this page section.
51 52 53 54 55 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 51 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 single File Field UI Element for this page section.
280 281 282 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 280 def self.filefield(element_name, locator) class_eval(%Q(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::FileField.new("#{element_name}", self, "#{locator}", :section);end)) end |
.image(element_name, locator) ⇒ Object
Declare and instantiate an single image UI Element for this page section.
263 264 265 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 263 def self.image(element_name, locator) class_eval(%Q(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::Image.new("#{element_name}", self, "#{locator}", :section);end)) end |
.images(element_hash) ⇒ Object
267 268 269 270 271 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 267 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 single label UI Element for this page section.
175 176 177 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 175 def self.label(element_name, locator) class_eval(%Q(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::Label.new("#{element_name}", self, "#{locator}", :section);end)) end |
.labels(element_hash) ⇒ Object
179 180 181 182 183 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 179 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 single link UI Element for this page section.
193 194 195 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 193 def self.link(element_name, locator) class_eval(%Q(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::Link.new("#{element_name}", self, "#{locator}", :section);end)) end |
.links(element_hash) ⇒ Object
197 198 199 200 201 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 197 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 single list UI Element for this page section.
245 246 247 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 245 def self.list(element_name, locator) class_eval(%Q(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::List.new("#{element_name}", self, "#{locator}", :section);end)) end |
.lists(element_hash) ⇒ Object
249 250 251 252 253 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 249 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 single radio button UI Element for this page section.
148 149 150 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 148 def self.radio(element_name, locator, proxy = nil) class_eval(%Q(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::Radio.new("#{element_name}", self, "#{locator}", :section, #{proxy});end)) end |
.radios(element_hash) ⇒ Object
Declare and instantiate a collection of radio buttons for this page section.
161 162 163 164 165 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 161 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 single PageSection object within this PageSection object.
291 292 293 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 291 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("#{section_name}", self, "#{locator}", :section);end)) end |
.sections(section_hash) ⇒ Object
295 296 297 298 299 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 295 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 single select list UI Element for this page section.
228 229 230 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 228 def self.selectlist(element_name, locator) class_eval(%Q(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::SelectList.new("#{element_name}", self, "#{locator}", :section);end)) end |
.selectlists(element_hash) ⇒ Object
232 233 234 235 236 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 232 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 single table UI Element for this page section.
210 211 212 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 210 def self.table(element_name, locator) class_eval(%Q(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::Table.new("#{element_name}", self, "#{locator}", :section);end)) end |
.tables(element_hash) ⇒ Object
214 215 216 217 218 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 214 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 single text field UI Element for this page section.
91 92 93 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 91 def self.textfield(element_name, locator) class_eval(%Q(def #{element_name.to_s};@#{element_name.to_s} ||= TestCentricity::TextField.new("#{element_name}", self, "#{locator}", :section);end)) end |
.textfields(element_hash) ⇒ Object
Declare and instantiate a collection of text fields for this page section.
105 106 107 108 109 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 105 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.
27 28 29 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 27 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
435 436 437 438 439 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 435 def click_at(x, y) section, _ = find_section raise "Section object '#{get_name}' (#{get_locator}) not found" unless section section.click_at(x, y) end |
#disabled? ⇒ Boolean
Is Section object disabled (not enabled)?
341 342 343 344 345 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 341 def disabled? obj, _ = find_element object_not_found_exception(obj, nil) obj.disabled? end |
#enabled? ⇒ Boolean
Is Section object enabled?
331 332 333 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 331 def enabled? not disabled? end |
#exists? ⇒ Boolean
Does Section object exists?
320 321 322 323 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 320 def exists? section, _ = find_section section != nil end |
#get_attribute(attrib) ⇒ Object
579 580 581 582 583 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 579 def get_attribute(attrib) section, _ = find_section raise "Section object '#{get_name}' (#{get_locator}) not found" unless section section[attrib] end |
#get_locator ⇒ Object
301 302 303 304 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 301 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_name ⇒ Object
306 307 308 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 306 def get_name @name end |
#get_native_attribute(attrib) ⇒ Object
585 586 587 588 589 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 585 def get_native_attribute(attrib) section, _ = find_section raise "Section object '#{get_name}' (#{get_locator}) not found" unless section section.native.attribute(attrib) end |
#hidden? ⇒ Boolean
Is Section object hidden (not visible)?
368 369 370 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 368 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)
554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 554 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.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
310 311 312 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 310 def set_parent(parent) @parent = parent end |
#verify_ui_states(ui_states) ⇒ Object
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 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 441 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 :width actual = ui_object.get_width when :height actual = ui_object.get_height 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 '#{ui_object.get_name}' (#{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) when :like, :is_like actual_like = actual.gsub("\n", '') actual_like = actual_like.gsub("\r", '') actual_like = actual_like.gsub("\t", '') actual_like = actual_like.gsub(' ', '') actual_like = actual_like.downcase expected = value.gsub("\n", '') expected = expected.gsub("\r", '') expected = expected.gsub("\t", '') expected = expected.gsub(' ', '') expected = expected.downcase ExceptionQueue.enqueue_exception("#{error_msg} be like '#{value}' but found #{actual}") unless actual_like.include?(expected) end end else ExceptionQueue.enqueue_assert_equal(state, actual, "Expected UI object '#{ui_object.get_name}' (#{ui_object.get_locator}) #{property.to_s} property") end end end ExceptionQueue.post_exceptions end |
#visible? ⇒ Boolean
Is Section object visible?
353 354 355 356 357 358 359 360 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 353 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.
378 379 380 381 382 383 384 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 378 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 object '#{get_name}' (#{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.
392 393 394 395 396 397 398 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 392 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 object '#{get_name}' (#{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.
420 421 422 423 424 425 426 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 420 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 object '#{get_name}' (#{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.
406 407 408 409 410 411 412 |
# File 'lib/testcentricity_web/page_sections_helper.rb', line 406 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 object '#{get_name}' (#{get_locator}) after #{timeout} seconds" unless visible? end |