class Selenium::WebDriver::Element
Constants
- ELEMENT_KEY
Attributes
Public Class Methods
Source
# File lib/selenium/webdriver/common/element.rb, line 34 def initialize(bridge, id) @bridge = bridge @id = id end
Creates a new Element
@api private
Public Instance Methods
Source
# File lib/selenium/webdriver/common/element.rb, line 43 def ==(other) other.is_a?(self.class) && ref == other.ref end
Source
# File lib/selenium/webdriver/common/element.rb, line 179 def accessible_name bridge.element_aria_label @id end
Gets the computed WAI-ARIA label of element.
@return [String]
Source
# File lib/selenium/webdriver/common/element.rb, line 169 def aria_role bridge.element_aria_role @id end
Gets the computed WAI-ARIA role of element
@return [String]
Source
# File lib/selenium/webdriver/common/element.rb, line 375 def as_json(*) @id.is_a?(Hash) ? @id : {ELEMENT_KEY => @id} end
For Rails 3 - jonathanjulian.com/2010/04/rails-to_json-or-as_json/
@api private
Source
# File lib/selenium/webdriver/common/element.rb, line 126 def attribute(name) bridge.element_attribute self, name end
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.
@param [String] name attribute name @return [String, nil] attribute value
@see dom_attribute
@see property
Source
# File lib/selenium/webdriver/common/element.rb, line 222 def clear bridge.clear_element @id end
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.
Source
# File lib/selenium/webdriver/common/element.rb, line 76 def click bridge.click_element @id end
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)
@example Click on a button
driver.find_element(tag_name: "button").click
@raise [StaleElementReferenceError] if the element no longer exists as
defined
Source
# File lib/selenium/webdriver/common/element.rb, line 275 def css_value(prop) bridge.element_value_of_css_property @id, prop end
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.
@see www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleDeclaration
Source
# File lib/selenium/webdriver/common/element.rb, line 252 def displayed? bridge.element_displayed? self end
Is the element displayed?
@return [Boolean]
Source
# File lib/selenium/webdriver/common/element.rb, line 145 def dom_attribute(name) bridge.element_dom_attribute @id, name end
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.
@param [String] name attribute name @return [String, nil] attribute value
Source
# File lib/selenium/webdriver/common/element.rb, line 232 def enabled? bridge.element_enabled? @id end
Is the element enabled?
@return [Boolean]
Source
# File lib/selenium/webdriver/common/element.rb, line 48 def hash [@id, @bridge].hash end
Source
# 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
Source
# File lib/selenium/webdriver/common/element.rb, line 286 def location bridge.element_location @id end
Get the location of this element.
@return [WebDriver::Point]
Source
# File lib/selenium/webdriver/common/element.rb, line 306 def location_once_scrolled_into_view bridge.element_location_once_scrolled_into_view @id end
Determine an element’s location on the screen once it has been scrolled into view.
@return [WebDriver::Point]
Source
# File lib/selenium/webdriver/common/element.rb, line 159 def property(name) bridge.element_property @id, name end
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.
@param [String] name property name @return [String, nil] property value
Source
# File lib/selenium/webdriver/common/element.rb, line 296 def rect bridge.element_rect @id end
Get the dimensions and coordinates of this element.
@return [WebDriver::Rectangle]
Source
# File lib/selenium/webdriver/common/element.rb, line 354 def ref [:element, @id] end
@api private @see SearchContext
Source
# File lib/selenium/webdriver/common/element.rb, line 242 def selected? bridge.element_selected? @id end
Is the element selected?
@return [Boolean]
Source
# File lib/selenium/webdriver/common/element.rb, line 207 def send_keys(*args) bridge.send_keys_to_element @id, Keys.encode(args) end
Send keystrokes to this element
@param [String, Symbol, Array] args keystrokes to send
Examples:
element.send_keys "foo" #=> value: 'foo' element.send_keys "tet", :arrow_left, "s" #=> value: 'test' element.send_keys [:control, 'a'], :space #=> value: ' '
@see Keys::KEYS
Source
# File lib/selenium/webdriver/common/element.rb, line 326 def shadow_root bridge.shadow_root @id end
Returns the shadow root of an element.
@return [WebDriver::ShadowRoot]
Source
# File lib/selenium/webdriver/common/element.rb, line 316 def size bridge.element_size @id end
Get the size of this element
@return [WebDriver::Dimension]
Source
# File lib/selenium/webdriver/common/element.rb, line 260 def submit bridge.submit_element @id end
Submit this element
Source
# File lib/selenium/webdriver/common/element.rb, line 90 def tag_name bridge.element_tag_name @id end
Get the tag name of the element.
@example Get the tagname of an INPUT element(returns “input”)
driver.find_element(xpath: "//input").tag_name
@return [String] The tag name of this element.
Source
# File lib/selenium/webdriver/common/element.rb, line 189 def text bridge.element_text @id end
Get the text content of this element
@return [String]
Source
# File lib/selenium/webdriver/common/element.rb, line 365 def to_json(*) JSON.generate as_json end
Convert to a WebElement JSON Object for transmission over the wire. @see github.com/SeleniumHQ/selenium/wiki/JsonWireProtocol#basic-terms-and-concepts
@api private
Private Instance Methods
Source
# File lib/selenium/webdriver/common/element.rb, line 390 def screenshot bridge.element_screenshot(@id) end
Source
# File lib/selenium/webdriver/common/element.rb, line 383 def selectable? tn = tag_name.downcase type = attribute(:type).to_s.downcase tn == 'option' || (tn == 'input' && %w[radio checkbox].include?(type)) end