class UiInteractors::Interactors::RowInteractor

Public Class Methods

new(driver, selector_options, xpath_root='//*') click to toggle source
Calls superclass method
# File lib/ui_interactors/interactors/row_interactor.rb, line 3
def initialize(driver, selector_options, xpath_root='//*')
  super(driver, nil, xpath_root)
  @selector_options = selector_options
end

Private Instance Methods

current_xpath() click to toggle source
# File lib/ui_interactors/interactors/row_interactor.rb, line 10
def current_xpath
  elements = @selector_options.fetch(:texts)
  # row selector looks like this:
  # "//*[@data-text='firstName' and normalize-space(text())='John']//ancestor::*[@data-view='row']//*[@data-text='lastName' and normalize-space(text())='Miller']//ancestor::*[@data-view='row']"
  # The generated xpath traverses down into the row and then back up to the row element itself
  row_selector = elements.map { |key, value| "//*[@data-text='#{key}' and normalize-space(text())='#{value}']//ancestor::*[@data-view='row']" }.join
  "#{@xpath_root}//*[@data-view='row']#{row_selector}"
end