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(*args) ⇒ 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
149 150 151 |
# File 'lib/applitools/selenium/element.rb', line 149 def border_bottom_width computed_style_integer(:'border-bottom-width') end |
#border_left_width ⇒ Object
137 138 139 |
# File 'lib/applitools/selenium/element.rb', line 137 def border_left_width computed_style_integer(:'border-left-width') end |
#border_right_width ⇒ Object
145 146 147 |
# File 'lib/applitools/selenium/element.rb', line 145 def border_right_width computed_style_integer(:'border-right-width') end |
#border_top_width ⇒ Object
141 142 143 |
# File 'lib/applitools/selenium/element.rb', line 141 def border_top_width computed_style_integer(:'border-top-width') end |
#bounds ⇒ Applitools::Base::Region
Gets the bounds of the element.
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 111 |
# File 'lib/applitools/selenium/element.rb', line 84 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::Base::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
129 130 131 |
# File 'lib/applitools/selenium/element.rb', line 129 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
133 134 135 |
# File 'lib/applitools/selenium/element.rb', line 133 def computed_style_integer(prop_style) computed_style(prop_style).gsub(/px/, '').to_i.round end |
#find_element(*args) ⇒ Object
113 114 115 |
# File 'lib/applitools/selenium/element.rb', line 113 def find_element(*args) self.class.new driver, super end |
#find_elements(*args) ⇒ Object
117 118 119 |
# File 'lib/applitools/selenium/element.rb', line 117 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
121 122 123 |
# File 'lib/applitools/selenium/element.rb', line 121 def overflow driver.execute_script(JS_GET_OVERFLOW, __getobj__).to_s end |
#overflow=(overflow) ⇒ Object
125 126 127 |
# File 'lib/applitools/selenium/element.rb', line 125 def overflow=(overflow) driver.execute_script(JS_SET_OVERFLOW_FORMATTED_STR % overflow, self) end |
#padding_bottom_width ⇒ Object
165 166 167 |
# File 'lib/applitools/selenium/element.rb', line 165 def padding_bottom_width computed_style_integer(:'padding-bottom') end |
#padding_left_width ⇒ Object
153 154 155 |
# File 'lib/applitools/selenium/element.rb', line 153 def padding_left_width computed_style_integer(:'padding-left') end |
#padding_right_width ⇒ Object
157 158 159 |
# File 'lib/applitools/selenium/element.rb', line 157 def padding_right_width computed_style_integer(:'padding-right') end |
#padding_top_width ⇒ Object
161 162 163 |
# File 'lib/applitools/selenium/element.rb', line 161 def padding_top_width computed_style_integer(:'padding-top') end |
#scroll_height ⇒ Object
181 182 183 |
# File 'lib/applitools/selenium/element.rb', line 181 def scroll_height Integer driver.execute_script(JS_GET_SCROLL_HEIGHT, self).to_s end |
#scroll_left ⇒ Object
169 170 171 |
# File 'lib/applitools/selenium/element.rb', line 169 def scroll_left Integer driver.execute_script(JS_GET_SCROLL_LEFT, self).to_s end |
#scroll_to(location) ⇒ Object
185 186 187 |
# File 'lib/applitools/selenium/element.rb', line 185 def scroll_to(location) driver.execute_script format(JS_SCROLL_TO_FORMATTED_STR, location.x, location.y), self end |
#scroll_top ⇒ Object
173 174 175 |
# File 'lib/applitools/selenium/element.rb', line 173 def scroll_top Integer driver.execute_script(JS_GET_SCROLL_TOP, self).to_s end |
#scroll_width ⇒ Object
177 178 179 |
# File 'lib/applitools/selenium/element.rb', line 177 def scroll_width Integer driver.execute_script(JS_GET_SCROLL_WIDTH, self).to_s end |
#send_keys(*args) ⇒ Object Also known as: send_key
Types content into text box.
73 74 75 76 77 78 |
# File 'lib/applitools/selenium/element.rb', line 73 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
189 190 191 192 193 194 195 196 |
# File 'lib/applitools/selenium/element.rb', line 189 def to_hash { left: location.x.to_i, top: location.y.to_i, width: size.width.to_i, height: size.height.to_i } end |