Class: Selenium::WebDriver::Element
- Inherits:
-
Object
- Object
- Selenium::WebDriver::Element
- Includes:
- SearchContext, TakesScreenshot
- Defined in:
- lib/selenium/webdriver/common/element.rb
Constant Summary collapse
- ELEMENT_KEY =
'element-6066-11e4-a52e-4f735466cecf'
Constants included from SearchContext
Instance Method Summary collapse
- #==(other) ⇒ Object (also: #eql?)
-
#accessible_name ⇒ String
Gets the computed WAI-ARIA label of element.
-
#aria_role ⇒ String
Gets the computed WAI-ARIA role of element.
-
#as_json ⇒ Object
private
For Rails 3 - jonathanjulian.com/2010/04/rails-to_json-or-as_json/.
-
#attribute(name) ⇒ String?
(also: #[])
This method attempts to provide the most likely desired current value for the attribute of the element, even when that desired value is actually a JavaScript property.
-
#clear ⇒ Object
If this element is a text entry element, this will clear the value.
-
#click ⇒ Object
Click this element.
-
#css_value(prop) ⇒ Object
(also: #style)
Get the value of the given CSS property.
-
#displayed? ⇒ Boolean
Is the element displayed?.
-
#dom_attribute(name) ⇒ String?
Gets the value of a declared HTML attribute of this element.
-
#enabled? ⇒ Boolean
Is the element enabled?.
- #hash ⇒ Object
-
#initialize(bridge, id) ⇒ Element
constructor
private
Creates a new Element.
- #inspect ⇒ Object
-
#location ⇒ WebDriver::Point
Get the location of this element.
-
#location_once_scrolled_into_view ⇒ WebDriver::Point
Determine an element’s location on the screen once it has been scrolled into view.
-
#property(name) ⇒ String?
Gets the value of a JavaScript property of this element This will return the current value, even if this has been modified after the page has been loaded.
-
#rect ⇒ WebDriver::Rectangle
Get the dimensions and coordinates of this element.
- #ref ⇒ Object private
-
#selected? ⇒ Boolean
Is the element selected?.
-
#send_keys(*args) ⇒ Object
(also: #send_key)
Send keystrokes to this element.
-
#shadow_root ⇒ WebDriver::ShadowRoot
Returns the shadow root of an element.
-
#size ⇒ WebDriver::Dimension
Get the size of this element.
-
#submit ⇒ Object
Submit this element.
-
#tag_name ⇒ String
Get the tag name of the element.
-
#text ⇒ String
Get the text content of this element.
-
#to_json ⇒ Object
private
Convert to a WebElement JSON Object for transmission over the wire.
Methods included from TakesScreenshot
#save_screenshot, #screenshot_as
Methods included from SearchContext
#find_element, #find_elements, finders
Constructor Details
#initialize(bridge, id) ⇒ Element
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Creates a new Element
34 35 36 37 |
# File 'lib/selenium/webdriver/common/element.rb', line 34 def initialize(bridge, id) @bridge = bridge @id = id end |
Instance Method Details
#==(other) ⇒ Object Also known as: eql?
43 44 45 |
# File 'lib/selenium/webdriver/common/element.rb', line 43 def ==(other) other.is_a?(self.class) && ref == other.ref end |
#accessible_name ⇒ String
Gets the computed WAI-ARIA label of element.
179 180 181 |
# File 'lib/selenium/webdriver/common/element.rb', line 179 def accessible_name bridge.element_aria_label @id end |
#aria_role ⇒ String
Gets the computed WAI-ARIA role of element
169 170 171 |
# File 'lib/selenium/webdriver/common/element.rb', line 169 def aria_role bridge.element_aria_role @id end |
#as_json ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
For Rails 3 - jonathanjulian.com/2010/04/rails-to_json-or-as_json/
375 376 377 |
# File 'lib/selenium/webdriver/common/element.rb', line 375 def as_json(*) @id.is_a?(Hash) ? @id : {ELEMENT_KEY => @id} end |
#attribute(name) ⇒ String? Also known as: []
This method attempts to provide the most likely desired current value for the attribute of the element, even when that desired value is actually a JavaScript property. It is implemented with a custom JavaScript atom. To obtain the exact value of the attribute or property, use #dom_attribute or #property methods respectively.
More exactly, this method will return the value of the property with the given name, if it exists. If it does not, then the value of the attribute with the given name is returned. If neither exists, null is returned.
The “style” attribute is converted as best can be to a text representation with a trailing semicolon.
The following are deemed to be “boolean” attributes, and will return either “true” or “false”:
async, autofocus, autoplay, checked, compact, complete, controls, declare, defaultchecked, defaultselected, defer, disabled, draggable, ended, formnovalidate, hidden, indeterminate, iscontenteditable, ismap, itemscope, loop, multiple, muted, nohref, noresize, noshade, novalidate, nowrap, open, paused, pubdate, readonly, required, reversed, scoped, seamless, seeking, selected, spellcheck, truespeed, willvalidate
Finally, the following commonly mis-capitalized attribute/property names are evaluated as expected:
When the value of “class” is requested, the “className” property is returned. When the value of “readonly” is requested, the “readOnly” property is returned.
126 127 128 |
# File 'lib/selenium/webdriver/common/element.rb', line 126 def attribute(name) bridge.element_attribute self, name end |
#clear ⇒ Object
If this element is a text entry element, this will clear the value. Has no effect on other elements. Text entry elements are INPUT and TEXTAREA elements.
Note that the events fired by this event may not be as you’d expect. In particular, we don’t fire any keyboard or mouse events. If you want to ensure keyboard events are fired, consider using #send_keys with the backspace key. To ensure you get a change event, consider following with a call to #send_keys with the tab key.
222 223 224 |
# File 'lib/selenium/webdriver/common/element.rb', line 222 def clear bridge.clear_element @id end |
#click ⇒ Object
Click this element. If this causes a new page to load, this method will attempt to block until the page has loaded. At this point, you should discard all references to this element and any further operations performed on this element will raise a StaleElementReferenceError unless you know that the element and the page will still be present. If click() causes a new page to be loaded via an event or is done by sending a native event then the method will not wait for it to be loaded and the caller should verify that a new page has been loaded.
There are some preconditions for an element to be clicked. The element must be visible and it must have a height and width greater then 0.
Equivalent to:
driver.action.click(element)
76 77 78 |
# File 'lib/selenium/webdriver/common/element.rb', line 76 def click bridge.click_element @id end |
#css_value(prop) ⇒ Object Also known as: style
Get the value of the given CSS property
Note that shorthand CSS properties (e.g. background, font, border, border-top, margin, margin-top, padding, padding-top, list-style, outline, pause, cue) are not returned, in accordance with the DOM CSS2 specification - you should directly access the longhand properties (e.g. background-color) to access the desired values.
275 276 277 |
# File 'lib/selenium/webdriver/common/element.rb', line 275 def css_value(prop) bridge.element_value_of_css_property @id, prop end |
#displayed? ⇒ Boolean
Is the element displayed?
252 253 254 |
# File 'lib/selenium/webdriver/common/element.rb', line 252 def displayed? bridge.element_displayed? self end |
#dom_attribute(name) ⇒ String?
Gets the value of a declared HTML attribute of this element.
As opposed to the #attribute method, this method only returns attributes declared in the element’s HTML markup.
If the attribute is not set, nil is returned.
145 146 147 |
# File 'lib/selenium/webdriver/common/element.rb', line 145 def dom_attribute(name) bridge.element_dom_attribute @id, name end |
#enabled? ⇒ Boolean
Is the element enabled?
232 233 234 |
# File 'lib/selenium/webdriver/common/element.rb', line 232 def enabled? bridge.element_enabled? @id end |
#hash ⇒ Object
48 49 50 |
# File 'lib/selenium/webdriver/common/element.rb', line 48 def hash [@id, @bridge].hash end |
#inspect ⇒ Object
39 40 41 |
# File 'lib/selenium/webdriver/common/element.rb', line 39 def inspect format '#<%<class>s:0x%<hash>x id=%<id>s>', class: self.class, hash: hash * 2, id: @id.inspect end |
#location ⇒ WebDriver::Point
Get the location of this element.
286 287 288 |
# File 'lib/selenium/webdriver/common/element.rb', line 286 def location bridge.element_location @id end |
#location_once_scrolled_into_view ⇒ WebDriver::Point
Determine an element’s location on the screen once it has been scrolled into view.
306 307 308 |
# File 'lib/selenium/webdriver/common/element.rb', line 306 def location_once_scrolled_into_view bridge.element_location_once_scrolled_into_view @id end |
#property(name) ⇒ String?
Gets the value of a JavaScript property of this element This will return the current value, even if this has been modified after the page has been loaded. If the value is not set, nil is returned.
159 160 161 |
# File 'lib/selenium/webdriver/common/element.rb', line 159 def property(name) bridge.element_property @id, name end |
#rect ⇒ WebDriver::Rectangle
Get the dimensions and coordinates of this element.
296 297 298 |
# File 'lib/selenium/webdriver/common/element.rb', line 296 def rect bridge.element_rect @id end |
#ref ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
354 355 356 |
# File 'lib/selenium/webdriver/common/element.rb', line 354 def ref [:element, @id] end |
#selected? ⇒ Boolean
Is the element selected?
242 243 244 |
# File 'lib/selenium/webdriver/common/element.rb', line 242 def selected? bridge.element_selected? @id end |
#send_keys(*args) ⇒ Object Also known as: send_key
Send keystrokes to this element
Examples:
element.send_keys "foo" #=> value: 'foo'
element.send_keys "tet", :arrow_left, "s" #=> value: 'test'
element.send_keys [:control, 'a'], :space #=> value: ' '
207 208 209 |
# File 'lib/selenium/webdriver/common/element.rb', line 207 def send_keys(*args) bridge.send_keys_to_element @id, Keys.encode(args) end |
#shadow_root ⇒ WebDriver::ShadowRoot
Returns the shadow root of an element.
326 327 328 |
# File 'lib/selenium/webdriver/common/element.rb', line 326 def shadow_root bridge.shadow_root @id end |
#size ⇒ WebDriver::Dimension
Get the size of this element
316 317 318 |
# File 'lib/selenium/webdriver/common/element.rb', line 316 def size bridge.element_size @id end |
#submit ⇒ Object
Submit this element
260 261 262 |
# File 'lib/selenium/webdriver/common/element.rb', line 260 def submit bridge.submit_element @id end |
#tag_name ⇒ String
Get the tag name of the element.
90 91 92 |
# File 'lib/selenium/webdriver/common/element.rb', line 90 def tag_name bridge.element_tag_name @id end |
#text ⇒ String
Get the text content of this element
189 190 191 |
# File 'lib/selenium/webdriver/common/element.rb', line 189 def text bridge.element_text @id end |
#to_json ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Convert to a WebElement JSON Object for transmission over the wire.
365 366 367 |
# File 'lib/selenium/webdriver/common/element.rb', line 365 def to_json(*) JSON.generate as_json end |