class UiInteractors::Interactors::BaseInteractor

Public Class Methods

new(driver, name=nil, xpath_root='//*') click to toggle source
# File lib/ui_interactors/interactors/base_interactor.rb, line 5
def initialize(driver, name=nil, xpath_root='//*')
  @driver = driver
  @name = name
  @xpath_root = xpath_root
end

Public Instance Methods

is_not_visible!() click to toggle source
# File lib/ui_interactors/interactors/base_interactor.rb, line 17
def is_not_visible!
  wait.until do
    elements = @driver.find_elements(xpath: current_xpath)
    elements.count == 0 || elements.map(&:displayed?).none?
  end
rescue
  raise("xpath is visible: #{current_xpath}")
end
is_visible!() click to toggle source
# File lib/ui_interactors/interactors/base_interactor.rb, line 11
def is_visible!
  wait.until { @driver.find_element(xpath: current_xpath).displayed? }
rescue
  raise("xpath is not visible: #{current_xpath}")
end

Private Instance Methods

current_xpath() click to toggle source
# File lib/ui_interactors/interactors/base_interactor.rb, line 28
def current_xpath
  raise('Subclass must override method')
end
find_element() click to toggle source
# File lib/ui_interactors/interactors/base_interactor.rb, line 40
def find_element
  is_visible!

  wait.until { @driver.find_element(xpath: current_xpath) }
end
wait() click to toggle source
# File lib/ui_interactors/interactors/base_interactor.rb, line 32
def wait
  ignored_errors = [
    Selenium::WebDriver::Error::NoSuchElementError,
    Selenium::WebDriver::Error::StaleElementReferenceError
  ]
  Selenium::WebDriver::Wait.new(timeout: 5, interval: 0.2, ignore: ignored_errors)
end