class WebMonkey

Constants

DEFAULT_WAIT_TIMEOUT

Attributes

driver[RW]
wait[RW]

Public Class Methods

new(driver:) click to toggle source
# File lib/kraken-mobile/monkeys/web/web_monkey.rb, line 9
def initialize(driver:)
  self.driver = driver
  self.wait = Selenium::WebDriver::Wait.new(timeout: DEFAULT_WAIT_TIMEOUT)
end

Public Instance Methods

execute_kraken_monkey(number_of_events) click to toggle source

Helpers

# File lib/kraken-mobile/monkeys/web/web_monkey.rb, line 15
def execute_kraken_monkey(number_of_events)
  number_of_events.times do |_i|
    execute_random_action
  end
end
execute_random_action() click to toggle source
# File lib/kraken-mobile/monkeys/web/web_monkey.rb, line 21
def execute_random_action
  arr = [
    method(:random_click), method(:insert_random_text)
  ]
  arr.sample.call
rescue StandardError => _e
  nil
end
insert_random_text() click to toggle source
# File lib/kraken-mobile/monkeys/web/web_monkey.rb, line 37
def insert_random_text
  element = @wait.until { driver.find_elements(:xpath, '//input').sample }
  highlight_element(element)
  element.click
  text = [Faker::Lorem.word, Faker::Lorem.sentence].sample
  element.send_keys(text)
  remove_element_highlight(element)
end
random_click() click to toggle source
# File lib/kraken-mobile/monkeys/web/web_monkey.rb, line 30
def random_click
  element = @wait.until { driver.find_elements(:xpath, '//*').sample }
  highlight_element(element)
  element.click
  remove_element_highlight(element)
end

Private Instance Methods

highlight_element(element) click to toggle source
# File lib/kraken-mobile/monkeys/web/web_monkey.rb, line 48
def highlight_element(element)
  @driver.execute_script(
    "arguments[0].setAttribute('style', arguments[1]);",
    element,
    'color: red; border: 2px solid red'
  )
end
remove_element_highlight(element) click to toggle source
# File lib/kraken-mobile/monkeys/web/web_monkey.rb, line 56
def remove_element_highlight(element)
  @driver.execute_script(
    "arguments[0].setAttribute('style', arguments[1]);",
    element,
    ''
  )
end