Class: Applitools::Selenium::Element
- Inherits:
-
SimpleDelegator
- Object
- SimpleDelegator
- Applitools::Selenium::Element
- Defined in:
- lib/applitools/selenium/element.rb
Constant Summary collapse
- JS_GET_COMPUTED_STYLE_FORMATTED_STR =
<<-JS.freeze var elem = arguments[0]; var styleProp = '%s'; if (window.getComputedStyle) { return window.getComputedStyle(elem, null) .getPropertyValue(styleProp); } else if (elem.currentStyle) { return elem.currentStyle[styleProp]; } else { return null; }; JS
- JS_GET_SCROLL_LEFT =
'return arguments[0].scrollLeft;'.freeze
- JS_GET_SCROLL_TOP =
'return arguments[0].scrollTop;'.freeze
- JS_GET_SCROLL_WIDTH =
'return arguments[0].scrollWidth;'.freeze
- JS_GET_SCROLL_HEIGHT =
'return arguments[0].scrollHeight;'.freeze
- JS_SCROLL_TO_FORMATTED_STR =
<<-JS.freeze arguments[0].scrollLeft = %d; arguments[0].scrollTop = %d; JS
- JS_GET_OVERFLOW =
'return arguments[0].style.overflow;'.freeze
- JS_SET_OVERFLOW_FORMATTED_STR =
"arguments[0].style.overflow = '%s'".freeze
- TRACE_PREFIX =
'EyesWebElement'.freeze
Instance Method Summary collapse
- #==(other) ⇒ Object (also: #eql?)
- #border_bottom_width ⇒ Object
- #border_left_width ⇒ Object
- #border_right_width ⇒ Object
- #border_top_width ⇒ Object
-
#bounds ⇒ Applitools::Base::Region
Gets the bounds of the element.
- #click ⇒ Object
- #computed_style(prop_style) ⇒ Object
- #computed_style_integer(prop_style) ⇒ Object
- #find_element(*args) ⇒ Object
- #find_elements(*args) ⇒ Object
-
#initialize(driver, element) ⇒ Element
constructor
Initialize class instance.
- #inspect ⇒ Object
- #overflow ⇒ Object
- #overflow=(overflow) ⇒ Object
- #padding_bottom_width ⇒ Object
- #padding_left_width ⇒ Object
- #padding_right_width ⇒ Object
- #padding_top_width ⇒ Object
- #scroll_height ⇒ Object
- #scroll_left ⇒ Object
- #scroll_to(location) ⇒ Object
- #scroll_top ⇒ Object
- #scroll_width ⇒ Object
-
#send_keys(keys) ⇒ Object
(also: #send_key)
Types content into text box.
- #to_hash ⇒ Object
Constructor Details
#initialize(driver, element) ⇒ Element
Initialize class instance.
37 38 39 40 41 |
# File 'lib/applitools/selenium/element.rb', line 37 def initialize(driver, element) super(element) @driver = driver end |
Instance Method Details
#==(other) ⇒ Object Also known as: eql?
59 60 61 62 63 64 65 |
# File 'lib/applitools/selenium/element.rb', line 59 def ==(other) if other.is_a? self.class super other.web_element else super other end end |
#border_bottom_width ⇒ Object
148 149 150 |
# File 'lib/applitools/selenium/element.rb', line 148 def border_bottom_width computed_style_integer(:'border-bottom-width') end |
#border_left_width ⇒ Object
136 137 138 |
# File 'lib/applitools/selenium/element.rb', line 136 def border_left_width computed_style_integer(:'border-left-width') end |
#border_right_width ⇒ Object
144 145 146 |
# File 'lib/applitools/selenium/element.rb', line 144 def border_right_width computed_style_integer(:'border-right-width') end |
#border_top_width ⇒ Object
140 141 142 |
# File 'lib/applitools/selenium/element.rb', line 140 def border_top_width computed_style_integer(:'border-top-width') end |
#bounds ⇒ Applitools::Base::Region
Gets the bounds of the element.
83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
# File 'lib/applitools/selenium/element.rb', line 83 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.})") 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 ⇒ Object
49 50 51 52 53 |
# File 'lib/applitools/selenium/element.rb', line 49 def click @driver.add_mouse_trigger(Applitools::MouseTrigger::MOUSE_ACTION[:click], self) # logger.info "click(#{bounds})"; web_element.click end |
#computed_style(prop_style) ⇒ Object
128 129 130 |
# File 'lib/applitools/selenium/element.rb', line 128 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) ⇒ Object
132 133 134 |
# File 'lib/applitools/selenium/element.rb', line 132 def computed_style_integer(prop_style) computed_style(prop_style).gsub(/px/, '').to_i.round end |
#find_element(*args) ⇒ Object
112 113 114 |
# File 'lib/applitools/selenium/element.rb', line 112 def find_element(*args) self.class.new driver, super end |
#find_elements(*args) ⇒ Object
116 117 118 |
# File 'lib/applitools/selenium/element.rb', line 116 def find_elements(*args) super(*args).map { |e| self.class.new driver, e } end |
#inspect ⇒ Object
55 56 57 |
# File 'lib/applitools/selenium/element.rb', line 55 def inspect TRACE_PREFIX + web_element.inspect end |
#overflow ⇒ Object
120 121 122 |
# File 'lib/applitools/selenium/element.rb', line 120 def overflow driver.execute_script(JS_GET_OVERFLOW, __getobj__).to_s end |
#overflow=(overflow) ⇒ Object
124 125 126 |
# File 'lib/applitools/selenium/element.rb', line 124 def overflow=(overflow) driver.execute_script(JS_SET_OVERFLOW_FORMATTED_STR % overflow, self) end |
#padding_bottom_width ⇒ Object
164 165 166 |
# File 'lib/applitools/selenium/element.rb', line 164 def padding_bottom_width computed_style_integer(:'padding-bottom') end |
#padding_left_width ⇒ Object
152 153 154 |
# File 'lib/applitools/selenium/element.rb', line 152 def padding_left_width computed_style_integer(:'padding-left') end |
#padding_right_width ⇒ Object
156 157 158 |
# File 'lib/applitools/selenium/element.rb', line 156 def padding_right_width computed_style_integer(:'padding-right') end |
#padding_top_width ⇒ Object
160 161 162 |
# File 'lib/applitools/selenium/element.rb', line 160 def padding_top_width computed_style_integer(:'padding-top') end |
#scroll_height ⇒ Object
180 181 182 |
# File 'lib/applitools/selenium/element.rb', line 180 def scroll_height Integer driver.execute_script(JS_GET_SCROLL_HEIGHT, self).to_s end |
#scroll_left ⇒ Object
168 169 170 |
# File 'lib/applitools/selenium/element.rb', line 168 def scroll_left Integer driver.execute_script(JS_GET_SCROLL_LEFT, self).to_s end |
#scroll_to(location) ⇒ Object
184 185 186 |
# File 'lib/applitools/selenium/element.rb', line 184 def scroll_to(location) driver.execute_script format(JS_SCROLL_TO_FORMATTED_STR, location.x, location.y), self end |
#scroll_top ⇒ Object
172 173 174 |
# File 'lib/applitools/selenium/element.rb', line 172 def scroll_top Integer driver.execute_script(JS_GET_SCROLL_TOP, self).to_s end |
#scroll_width ⇒ Object
176 177 178 |
# File 'lib/applitools/selenium/element.rb', line 176 def scroll_width Integer driver.execute_script(JS_GET_SCROLL_WIDTH, self).to_s end |
#send_keys(keys) ⇒ Object Also known as: send_key
Types content into text box.
72 73 74 75 76 77 |
# File 'lib/applitools/selenium/element.rb', line 72 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 |
#to_hash ⇒ Object
188 189 190 191 192 193 194 195 |
# File 'lib/applitools/selenium/element.rb', line 188 def to_hash { left: location.x.to_i, top: location.y.to_i, width: size.width.to_i, height: size.height.to_i } end |