Class: Capybara::Node::Simple

Inherits:
Object
  • Object
show all
Includes:
Finders, Matchers
Defined in:
lib/capybara/node/simple.rb

Overview

A Simple is a simpler version of Base which includes only Finders and Matchers and does not include Actions. This type of node is returned when using Capybara.string.

It is useful in that it does not require a session, an application or a driver, but can still use Capybara's finders and matchers on any string that contains HTML.

Instance Attribute Summary (collapse)

Instance Method Summary (collapse)

Methods included from Matchers

#has_button?, #has_checked_field?, #has_content?, #has_css?, #has_field?, #has_link?, #has_no_button?, #has_no_checked_field?, #has_no_content?, #has_no_css?, #has_no_field?, #has_no_link?, #has_no_select?, #has_no_selector?, #has_no_table?, #has_no_unchecked_field?, #has_no_xpath?, #has_select?, #has_selector?, #has_table?, #has_unchecked_field?, #has_xpath?

Methods included from Finders

#all, #find, #find_button, #find_by_id, #find_field, #find_link, #first

Constructor Details

- (Simple) initialize(native)



20
21
22
23
# File 'lib/capybara/node/simple.rb', line 20

def initialize(native)
  native = Nokogiri::HTML(native) if native.is_a?(String)
  @native = native
end

Instance Attribute Details

- (Object) native (readonly)

Returns the value of attribute native



18
19
20
# File 'lib/capybara/node/simple.rb', line 18

def native
  @native
end

Instance Method Details

- (String) [](name)

Retrieve the given attribute

element[:title] # => HTML title attribute


42
43
44
45
46
47
48
49
50
51
# File 'lib/capybara/node/simple.rb', line 42

def [](name)
  attr_name = name.to_s
  if attr_name == 'value'
    value
  elsif 'input' == tag_name and 'checkbox' == native[:type] and 'checked' == attr_name
    native['checked'] == 'checked'
  else
    native[attr_name]
  end
end

- (Boolean) checked?

Whether or not the element is checked.



107
108
109
# File 'lib/capybara/node/simple.rb', line 107

def checked?
  native[:checked]
end

- (String) path

An XPath expression describing where on the page the element can be found



67
68
69
# File 'lib/capybara/node/simple.rb', line 67

def path
  native.path
end

- (Boolean) selected?

Whether or not the element is selected.



117
118
119
# File 'lib/capybara/node/simple.rb', line 117

def selected?
  native[:selected]
end

- (String) tag_name



57
58
59
# File 'lib/capybara/node/simple.rb', line 57

def tag_name
  native.node_name
end

- (String) text



29
30
31
# File 'lib/capybara/node/simple.rb', line 29

def text
  native.text
end

- (String) value



75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/capybara/node/simple.rb', line 75

def value
  if tag_name == 'textarea'
    native.content
  elsif tag_name == 'select'
    if native['multiple'] == 'multiple'
      native.xpath(".//option[@selected='selected']").map { |option| option[:value] || option.content  }
    else
      option = native.xpath(".//option[@selected='selected']").first || native.xpath(".//option").first
      option[:value] || option.content if option
    end
  else
    native[:value]
  end
end

- (Boolean) visible?

Whether or not the element is visible. Does not support CSS, so the result may be inaccurate.



97
98
99
# File 'lib/capybara/node/simple.rb', line 97

def visible?
  native.xpath("./ancestor-or-self::*[contains(@style, 'display:none') or contains(@style, 'display: none')]").size == 0
end