A {Capybara::Element} represents a single element on the page. It is possible to interact with the contents of this element the same as with a document:
session = Capybara::Session.new(:rack_test, my_app) bar = session.find('#bar') # from Capybara::Node::Finders bar.select('Baz', :from => 'Quox') # from Capybara::Node::Actions
{Capybara::Element} also has access to HTML attributes and other properties of the element:
bar.value bar.text bar[:title]
@see Capybara::Node
Retrieve the given attribute
element[:title] # => HTML title attribute
@param [Symbol] attribute The attribute to retrieve @return [String] The value of the attribute
# File lib/capybara/node/element.rb, line 60 def [](attribute) wait_until { base[attribute] } end
# File lib/capybara/node/element.rb, line 188 def all(*args) wait_until { super } end
# File lib/capybara/node/element.rb, line 31 def allow_reload! @allow_reload = true end
Whether or not the element is checked.
@return [Boolean] Whether the element is checked
# File lib/capybara/node/element.rb, line 131 def checked? wait_until { base.checked? } end
Click the Element
# File lib/capybara/node/element.rb, line 102 def click wait_until { base.click } end
Drag the element to the given other element.
source = page.find('#foo')
target = page.find('#bar')
source.drag_to(target)
@param [Capybara::Element] node The element to drag to
# File lib/capybara/node/element.rb, line 176 def drag_to(node) wait_until { base.drag_to(node.base) } end
# File lib/capybara/node/element.rb, line 180 def find(*args) wait_until { super } end
# File lib/capybara/node/element.rb, line 184 def first(*args) wait_until { super } end
# File lib/capybara/node/element.rb, line 200 def inspect %Q(#<Capybara::Element tag="#{tag_name}" path="#{path}">) rescue NotSupportedByDriverError %Q(#<Capybara::Element tag="#{tag_name}">) end
@return [Object] The native element from the driver, this allows access to driver specific methods
# File lib/capybara/node/element.rb, line 39 def native wait_until { base.native } end
An XPath expression describing where on the page the element can be found
@return [String] An XPath expression
# File lib/capybara/node/element.rb, line 151 def path wait_until { base.path } end
# File lib/capybara/node/element.rb, line 192 def reload if @allow_reload reloaded = parent.reload.first(@selector.name, @selector.locator, @selector.options) @base = reloaded.base if reloaded end self end
Select this node if is an option element inside a select tag
# File lib/capybara/node/element.rb, line 86 def select_option wait_until { base.select_option } end
Whether or not the element is selected.
@return [Boolean] Whether the element is selected
# File lib/capybara/node/element.rb, line 141 def selected? wait_until { base.selected? } end
Set the value of the form element to the given value.
@param [String] value The new value
# File lib/capybara/node/element.rb, line 78 def set(value) wait_until { base.set(value) } end
@return [String] The tag name of the element
# File lib/capybara/node/element.rb, line 110 def tag_name wait_until { base.tag_name } end
@return [String] The text of the element
# File lib/capybara/node/element.rb, line 47 def text wait_until { base.text } end
Trigger any event on the current element, for example mouseover or focus events. Does not work in Selenium.
@param [String] event The name of the event to trigger
# File lib/capybara/node/element.rb, line 162 def trigger(event) wait_until { base.trigger(event) } end
Unselect this node if is an option element inside a multiple select tag
# File lib/capybara/node/element.rb, line 94 def unselect_option wait_until { base.unselect_option } end
@return [String] The value of the form element
# File lib/capybara/node/element.rb, line 68 def value wait_until { base.value } end
Whether or not the element is visible. Not all drivers support CSS, so the result may be inaccurate.
@return [Boolean] Whether the element is visible
# File lib/capybara/node/element.rb, line 121 def visible? wait_until { base.visible? } end
# File lib/capybara/node/element.rb, line 25 def initialize(session, base, parent, selector) super(session, base) @parent = parent @selector = selector end