class Applitools::Selenium::Element

Constants

JS_GET_COMPUTED_STYLE_FORMATTED_STR
JS_GET_OVERFLOW
JS_GET_SCROLL_HEIGHT
JS_GET_SCROLL_LEFT
JS_GET_SCROLL_TOP
JS_GET_SCROLL_WIDTH
JS_SCROLL_TO_FORMATTED_STR
JS_SET_OVERFLOW_DATA_FORMATTED_STR
JS_SET_OVERFLOW_FORMATTED_STR
JS_SET_SCROLL_DATA_FORMATTED_STR
TRACE_PREFIX

Attributes

driver[R]

Public Class Methods

new(driver, element) click to toggle source

Initialize class instance.

@param [Applitools::Selenium::Driver] driver The wrapped Selenium driver instance. @param [Applitools::Selenium::Element] element The wrapped Selenium element instance.

Calls superclass method
# File lib/applitools/selenium/element.rb, line 41
def initialize(driver, element)
  super(element)

  @driver = driver
end

Public Instance Methods

==(other) click to toggle source
Calls superclass method
# File lib/applitools/selenium/element.rb, line 63
def ==(other)
  if other.is_a? self.class
    super other.web_element
  else
    super other
  end
end
Also aliased as: eql?
border_bottom_width() click to toggle source
# File lib/applitools/selenium/element.rb, line 160
def border_bottom_width
  computed_style_integer(:'border-bottom-width')
end
border_left_width() click to toggle source
# File lib/applitools/selenium/element.rb, line 148
def border_left_width
  computed_style_integer(:'border-left-width')
end
border_right_width() click to toggle source
# File lib/applitools/selenium/element.rb, line 156
def border_right_width
  computed_style_integer(:'border-right-width')
end
border_top_width() click to toggle source
# File lib/applitools/selenium/element.rb, line 152
def border_top_width
  computed_style_integer(:'border-top-width')
end
bounds() click to toggle source

Gets the bounds of the element.

@return [Applitools::Base::Region] An instance of the region.

# File lib/applitools/selenium/element.rb, line 87
def bounds
  point = location
  left = point.x
  top = point.y
  width = 0
  height = 0

  begin
    dimension = size
    width = dimension.width
    height = dimension.height
  rescue => e
    # Not supported on all platforms.
    Applitools::EyesLogger.error("Failed extracting size using JavaScript: (#{e.message})")
  end

  if left < 0
    width = [0, width + left].max
    left = 0
  end

  if top < 0
    height = [0, height + top].max
    top = 0
  end

  Applitools::Region.new(left, top, width, height)
end
click() click to toggle source
# File lib/applitools/selenium/element.rb, line 53
def click
  @driver.add_mouse_trigger(Applitools::MouseTrigger::MOUSE_ACTION[:click], self)
  # logger.info "click(#{bounds})";
  web_element.click
end
computed_style(prop_style) click to toggle source
# File lib/applitools/selenium/element.rb, line 140
def computed_style(prop_style)
  driver.execute_script(JS_GET_COMPUTED_STYLE_FORMATTED_STR % prop_style, self).to_s
end
computed_style_integer(prop_style) click to toggle source
# File lib/applitools/selenium/element.rb, line 144
def computed_style_integer(prop_style)
  computed_style(prop_style).gsub(/px/, '').to_i.round
end
eql?(other)
Alias for: ==
find_element(*args) click to toggle source
Calls superclass method
# File lib/applitools/selenium/element.rb, line 116
def find_element(*args)
  self.class.new driver, super
end
find_elements(*args) click to toggle source
Calls superclass method
# File lib/applitools/selenium/element.rb, line 120
def find_elements(*args)
  super(*args).map { |e| self.class.new driver, e }
end
inspect() click to toggle source
# File lib/applitools/selenium/element.rb, line 59
def inspect
  TRACE_PREFIX + web_element.inspect
end
overflow() click to toggle source
# File lib/applitools/selenium/element.rb, line 124
def overflow
  driver.execute_script(JS_GET_OVERFLOW, __getobj__).to_s
end
overflow=(overflow) click to toggle source
# File lib/applitools/selenium/element.rb, line 128
def overflow=(overflow)
  driver.execute_script(JS_SET_OVERFLOW_FORMATTED_STR % overflow, self)
end
overflow_data_attribute=(value) click to toggle source
# File lib/applitools/selenium/element.rb, line 136
def overflow_data_attribute=(value)
  driver.execute_script(JS_SET_OVERFLOW_DATA_FORMATTED_STR % value, self)
end
padding_bottom_width() click to toggle source
# File lib/applitools/selenium/element.rb, line 176
def padding_bottom_width
  computed_style_integer(:'padding-bottom')
end
padding_left_width() click to toggle source
# File lib/applitools/selenium/element.rb, line 164
def padding_left_width
  computed_style_integer(:'padding-left')
end
padding_right_width() click to toggle source
# File lib/applitools/selenium/element.rb, line 168
def padding_right_width
  computed_style_integer(:'padding-right')
end
padding_top_width() click to toggle source
# File lib/applitools/selenium/element.rb, line 172
def padding_top_width
  computed_style_integer(:'padding-top')
end
scroll_data_attribute=(value) click to toggle source
# File lib/applitools/selenium/element.rb, line 132
def scroll_data_attribute=(value)
  driver.execute_script(JS_SET_SCROLL_DATA_FORMATTED_STR % value, self)
end
scroll_height() click to toggle source
# File lib/applitools/selenium/element.rb, line 192
def scroll_height
  Integer driver.execute_script(JS_GET_SCROLL_HEIGHT, self).to_s
end
scroll_left() click to toggle source
# File lib/applitools/selenium/element.rb, line 180
def scroll_left
  Integer driver.execute_script(JS_GET_SCROLL_LEFT, self).to_s
end
scroll_to(location) click to toggle source
# File lib/applitools/selenium/element.rb, line 196
def scroll_to(location)
  driver.execute_script format(JS_SCROLL_TO_FORMATTED_STR, location.x, location.y), self
end
scroll_top() click to toggle source
# File lib/applitools/selenium/element.rb, line 184
def scroll_top
  Integer driver.execute_script(JS_GET_SCROLL_TOP, self).to_s
end
scroll_width() click to toggle source
# File lib/applitools/selenium/element.rb, line 188
def scroll_width
  Integer driver.execute_script(JS_GET_SCROLL_WIDTH, self).to_s
end
send_key(*args)
Alias for: send_keys
send_keys(*args) click to toggle source

Types content into text box. @param [Array, String] keys The content to type. @!parse def send_keys(keys); end;

# File lib/applitools/selenium/element.rb, line 76
def send_keys(*args)
  Selenium::WebDriver::Keys.encode(args).each do |key|
    @driver.add_text_trigger(self, key.to_s)
  end
  web_element.send_keys(*args)
end
Also aliased as: send_key
to_hash() click to toggle source
# File lib/applitools/selenium/element.rb, line 200
def to_hash
  {
    left: location.x.to_i,
    top: location.y.to_i,
    width: size.width.to_i,
    height: size.height.to_i
  }
end

Protected Instance Methods

web_element() click to toggle source
# File lib/applitools/selenium/element.rb, line 47
def web_element
  @web_element ||= __getobj__
end