Class: Capybara::Node::Element
- Defined in:
- lib/capybara/node/element.rb
Overview
A 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)
= session.find('#bar') # from Capybara::Node::Finders
.select('Baz', :from => 'Quox') # from Capybara::Node::Actions
Element also has access to HTML attributes and other properties of the element:
.value
.text
[:title]
Instance Attribute Summary
Attributes inherited from Base
Instance Method Summary collapse
-
#[](attribute) ⇒ String
Retrieve the given attribute.
- #allow_reload! ⇒ Object
-
#checked? ⇒ Boolean
Whether or not the element is checked.
-
#click ⇒ Object
Click the Element.
-
#disabled? ⇒ Boolean
Whether or not the element is disabled.
-
#drag_to(node) ⇒ Object
Drag the element to the given other element.
-
#hover ⇒ Object
Hover on the Element.
-
#initialize(session, base, parent, query) ⇒ Element
constructor
A new instance of Element.
- #inspect ⇒ Object
-
#native ⇒ Object
The native element from the driver, this allows access to driver specific methods.
-
#path ⇒ String
An XPath expression describing where on the page the element can be found.
- #reload ⇒ Object
-
#select_option ⇒ Object
Select this node if is an option element inside a select tag.
-
#selected? ⇒ Boolean
Whether or not the element is selected.
-
#set(value) ⇒ Object
Set the value of the form element to the given value.
-
#tag_name ⇒ String
The tag name of the element.
-
#text(type = nil) ⇒ String
Retrieve the text of the element.
-
#trigger(event) ⇒ Object
Trigger any event on the current element, for example mouseover or focus events.
-
#unselect_option ⇒ Object
Unselect this node if is an option element inside a multiple select tag.
-
#value ⇒ String
The value of the form element.
-
#visible? ⇒ Boolean
Whether or not the element is visible.
Methods inherited from Base
Methods included from Matchers
#==, #assert_no_selector, #assert_selector, #has_button?, #has_checked_field?, #has_css?, #has_field?, #has_link?, #has_no_button?, #has_no_checked_field?, #has_no_css?, #has_no_field?, #has_no_link?, #has_no_select?, #has_no_selector?, #has_no_table?, #has_no_text?, #has_no_unchecked_field?, #has_no_xpath?, #has_select?, #has_selector?, #has_table?, #has_text?, #has_unchecked_field?, #has_xpath?
Methods included from Actions
#attach_file, #check, #choose, #click_button, #click_link, #click_link_or_button, #fill_in, #select, #uncheck, #unselect
Methods included from Finders
#all, #find, #find_button, #find_by_id, #find_field, #find_link, #first
Constructor Details
#initialize(session, base, parent, query) ⇒ Element
Returns a new instance of Element.
25 26 27 28 29 |
# File 'lib/capybara/node/element.rb', line 25 def initialize(session, base, parent, query) super(session, base) @parent = parent @query = query end |
Instance Method Details
#[](attribute) ⇒ String
Retrieve the given attribute
element[:title] # => HTML title attribute
75 76 77 |
# File 'lib/capybara/node/element.rb', line 75 def [](attribute) synchronize { base[attribute] } end |
#allow_reload! ⇒ Object
31 32 33 |
# File 'lib/capybara/node/element.rb', line 31 def allow_reload! @allow_reload = true end |
#checked? ⇒ Boolean
Whether or not the element is checked.
154 155 156 |
# File 'lib/capybara/node/element.rb', line 154 def checked? synchronize { base.checked? } end |
#click ⇒ Object
Click the Element
117 118 119 |
# File 'lib/capybara/node/element.rb', line 117 def click synchronize { base.click } end |
#disabled? ⇒ Boolean
Whether or not the element is disabled.
174 175 176 |
# File 'lib/capybara/node/element.rb', line 174 def disabled? synchronize { base.disabled? } end |
#drag_to(node) ⇒ Object
Drag the element to the given other element.
source = page.find('#foo')
target = page.find('#bar')
source.drag_to(target)
209 210 211 |
# File 'lib/capybara/node/element.rb', line 209 def drag_to(node) synchronize { base.drag_to(node.base) } end |
#hover ⇒ Object
Hover on the Element
125 126 127 |
# File 'lib/capybara/node/element.rb', line 125 def hover synchronize { base.hover } end |
#inspect ⇒ Object
225 226 227 228 229 |
# File 'lib/capybara/node/element.rb', line 225 def inspect %(#<Capybara::Element tag="#{tag_name}" path="#{path}">) rescue NotSupportedByDriverError, 'Capybara::Node::Element#inspect' %(#<Capybara::Element tag="#{tag_name}">) end |
#native ⇒ Object
Returns The native element from the driver, this allows access to driver specific methods.
39 40 41 |
# File 'lib/capybara/node/element.rb', line 39 def native synchronize { base.native } end |
#path ⇒ String
An XPath expression describing where on the page the element can be found
184 185 186 |
# File 'lib/capybara/node/element.rb', line 184 def path synchronize { base.path } end |
#reload ⇒ Object
213 214 215 216 217 218 219 220 221 222 223 |
# File 'lib/capybara/node/element.rb', line 213 def reload if @allow_reload begin reloaded = parent.reload.first(@query.name, @query.locator, @query.) @base = reloaded.base if reloaded rescue => e raise e unless catch_error?(e) end end self end |
#select_option ⇒ Object
Select this node if is an option element inside a select tag
101 102 103 |
# File 'lib/capybara/node/element.rb', line 101 def select_option synchronize { base.select_option } end |
#selected? ⇒ Boolean
Whether or not the element is selected.
164 165 166 |
# File 'lib/capybara/node/element.rb', line 164 def selected? synchronize { base.selected? } end |
#set(value) ⇒ Object
Set the value of the form element to the given value.
93 94 95 |
# File 'lib/capybara/node/element.rb', line 93 def set(value) synchronize { base.set(value) } end |
#tag_name ⇒ String
Returns The tag name of the element.
133 134 135 |
# File 'lib/capybara/node/element.rb', line 133 def tag_name synchronize { base.tag_name } end |
#text(type = nil) ⇒ String
Retrieve the text of the element. If Capybara.ignore_hidden_elements is true, which it is by default, then this will return only text which is visible. The exact semantics of this may differ between drivers, but generally any text within elements with display:none is ignored. This behaviour can be overridden by passing :all to this method.
55 56 57 58 59 60 61 62 63 64 |
# File 'lib/capybara/node/element.rb', line 55 def text(type=nil) type ||= :all unless Capybara.ignore_hidden_elements or Capybara.visible_text_only synchronize do if type == :all base.all_text else base.visible_text end end end |
#trigger(event) ⇒ Object
Trigger any event on the current element, for example mouseover or focus events. Does not work in Selenium.
195 196 197 |
# File 'lib/capybara/node/element.rb', line 195 def trigger(event) synchronize { base.trigger(event) } end |
#unselect_option ⇒ Object
Unselect this node if is an option element inside a multiple select tag
109 110 111 |
# File 'lib/capybara/node/element.rb', line 109 def unselect_option synchronize { base.unselect_option } end |
#value ⇒ String
Returns The value of the form element.
83 84 85 |
# File 'lib/capybara/node/element.rb', line 83 def value synchronize { base.value } end |
#visible? ⇒ Boolean
Whether or not the element is visible. Not all drivers support CSS, so the result may be inaccurate.
144 145 146 |
# File 'lib/capybara/node/element.rb', line 144 def visible? synchronize { base.visible? } end |