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 = ::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.
-
#double_click ⇒ Object
Double Click the Element.
-
#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
-
#right_click ⇒ Object
Right Click the Element.
-
#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.
170 171 172 |
# File 'lib/capybara/node/element.rb', line 170 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.
190 191 192 |
# File 'lib/capybara/node/element.rb', line 190 def disabled? synchronize { base.disabled? } end |
#double_click ⇒ Object
Double Click the Element
133 134 135 |
# File 'lib/capybara/node/element.rb', line 133 def double_click synchronize { base.double_click } 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)
225 226 227 |
# File 'lib/capybara/node/element.rb', line 225 def drag_to(node) synchronize { base.drag_to(node.base) } end |
#hover ⇒ Object
Hover on the Element
141 142 143 |
# File 'lib/capybara/node/element.rb', line 141 def hover synchronize { base.hover } end |
#inspect ⇒ Object
241 242 243 244 245 |
# File 'lib/capybara/node/element.rb', line 241 def inspect %(#<Capybara::Element tag="#{tag_name}" path="#{path}">) rescue NotSupportedByDriverError %(#<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
200 201 202 |
# File 'lib/capybara/node/element.rb', line 200 def path synchronize { base.path } end |
#reload ⇒ Object
229 230 231 232 233 234 235 236 237 238 239 |
# File 'lib/capybara/node/element.rb', line 229 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 |
#right_click ⇒ Object
Right Click the Element
125 126 127 |
# File 'lib/capybara/node/element.rb', line 125 def right_click synchronize { base.right_click } 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.
180 181 182 |
# File 'lib/capybara/node/element.rb', line 180 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.
149 150 151 |
# File 'lib/capybara/node/element.rb', line 149 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 .ignore_hidden_elements or .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.
211 212 213 |
# File 'lib/capybara/node/element.rb', line 211 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.
160 161 162 |
# File 'lib/capybara/node/element.rb', line 160 def visible? synchronize { base.visible? } end |