Class: Capybara::Webkit::Node

Inherits:
Driver::Node
  • Object
show all
Defined in:
lib/capybara/webkit/node.rb

Instance Method Summary collapse

Constructor Details

#initialize(session, base, browser) ⇒ Node

Returns a new instance of Node.



3
4
5
6
# File 'lib/capybara/webkit/node.rb', line 3

def initialize(session, base, browser)
  super(session, base)
  @browser = browser
end

Instance Method Details

#==(other) ⇒ Object



170
171
172
# File 'lib/capybara/webkit/node.rb', line 170

def ==(other)
  invoke("equals", other.native) == "true"
end

#[](name) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/capybara/webkit/node.rb', line 17

def [](name)
  value = invoke("attribute", name)
  if name == 'checked' || name == 'disabled' || name == 'multiple'
    value == 'true'
  else
    if invoke("hasAttribute", name) == 'true'
      value
    else
      nil
    end
  end
end

#all_textObject



13
14
15
# File 'lib/capybara/webkit/node.rb', line 13

def all_text
  Capybara::Helpers.normalize_whitespace(invoke("allText"))
end

#allow_unattached_nodes?Boolean

Returns:

  • (Boolean)


154
155
156
# File 'lib/capybara/webkit/node.rb', line 154

def allow_unattached_nodes?
  !automatic_reload?
end

#attached?Boolean

Returns:

  • (Boolean)


162
163
164
# File 'lib/capybara/webkit/node.rb', line 162

def attached?
  @browser.command("Node", "isAttached", native) == "true"
end

#automatic_reload?Boolean

Returns:

  • (Boolean)


158
159
160
# File 'lib/capybara/webkit/node.rb', line 158

def automatic_reload?
  Capybara.respond_to?(:automatic_reload) && Capybara.automatic_reload
end

#checked?Boolean

Returns:

  • (Boolean)


112
113
114
# File 'lib/capybara/webkit/node.rb', line 112

def checked?
  self['checked']
end

#clickObject



80
81
82
# File 'lib/capybara/webkit/node.rb', line 80

def click
  invoke("leftClick")
end

#disabled?Boolean

Returns:

  • (Boolean)


116
117
118
119
120
121
122
# File 'lib/capybara/webkit/node.rb', line 116

def disabled?
  if %w(option optgroup).include? tag_name
    self['disabled'] || find_xpath("parent::*")[0].disabled?
  else
    self['disabled']
  end
end

#double_clickObject



84
85
86
# File 'lib/capybara/webkit/node.rb', line 84

def double_click
  invoke("doubleClick")
end

#drag_to(element) ⇒ Object



96
97
98
# File 'lib/capybara/webkit/node.rb', line 96

def drag_to(element)
  invoke 'dragTo', element.native
end

#find_css(selector) ⇒ Object



144
145
146
147
148
# File 'lib/capybara/webkit/node.rb', line 144

def find_css(selector)
  invoke("findCssWithin", selector).split(',').map do |native|
    self.class.new(driver, native, @browser)
  end
end

#find_xpath(xpath) ⇒ Object Also known as: find



136
137
138
139
140
# File 'lib/capybara/webkit/node.rb', line 136

def find_xpath(xpath)
  invoke("findXpathWithin", xpath).split(',').map do |native|
    self.class.new(driver, native, @browser)
  end
end

#hoverObject



92
93
94
# File 'lib/capybara/webkit/node.rb', line 92

def hover
  invoke("hover")
end

#inner_htmlObject



38
39
40
# File 'lib/capybara/webkit/node.rb', line 38

def inner_html
  invoke 'getInnerHTML'
end

#inner_html=(value) ⇒ Object



42
43
44
# File 'lib/capybara/webkit/node.rb', line 42

def inner_html=(value)
  invoke 'setInnerHTML', value
end

#invoke(name, *args) ⇒ Object



150
151
152
# File 'lib/capybara/webkit/node.rb', line 150

def invoke(name, *args)
  @browser.command "Node", name, allow_unattached_nodes?, native, *args
end

#multiple_select?Boolean

Returns:

  • (Boolean)


166
167
168
# File 'lib/capybara/webkit/node.rb', line 166

def multiple_select?
  self.tag_name == "select" && self["multiple"]
end

#pathObject



124
125
126
# File 'lib/capybara/webkit/node.rb', line 124

def path
  invoke "path"
end

#right_clickObject



88
89
90
# File 'lib/capybara/webkit/node.rb', line 88

def right_click
  invoke("rightClick")
end

#select_optionObject



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

def select_option
  invoke "selectOption"
end

#selected?Boolean

Returns:

  • (Boolean)


108
109
110
# File 'lib/capybara/webkit/node.rb', line 108

def selected?
  invoke("selected") == "true"
end

#send_keys(*keys) ⇒ Object



50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/capybara/webkit/node.rb', line 50

def send_keys(*keys)
  invoke("sendKeys", keys.map { |key|
    case key
    when :space
      " "
    when :enter
      "\r"
    when :backspace
      "\b"
    when String
      key.to_s
    else
      raise Capybara::NotSupportedByDriverError.new
    end
  }.join)
end

#set(value) ⇒ Object



46
47
48
# File 'lib/capybara/webkit/node.rb', line 46

def set(value)
  invoke "set", *[value].flatten
end

#submit(opts = {}) ⇒ Object



128
129
130
# File 'lib/capybara/webkit/node.rb', line 128

def submit(opts = {})
  invoke "submit"
end

#tag_nameObject



100
101
102
# File 'lib/capybara/webkit/node.rb', line 100

def tag_name
  invoke "tagName"
end

#trigger(event) ⇒ Object



132
133
134
# File 'lib/capybara/webkit/node.rb', line 132

def trigger(event)
  invoke "trigger", event
end

#unselect_optionObject



71
72
73
74
75
76
77
78
# File 'lib/capybara/webkit/node.rb', line 71

def unselect_option
  select = find_xpath("ancestor::select").first
  if select.multiple_select?
    invoke "unselectOption"
  else
    raise Capybara::UnselectNotAllowed
  end
end

#valueObject



30
31
32
33
34
35
36
# File 'lib/capybara/webkit/node.rb', line 30

def value
  if multiple_select?
    self.find_xpath(".//option").select(&:selected?).map(&:value)
  else
    invoke "value"
  end
end

#visible?Boolean

Returns:

  • (Boolean)


104
105
106
# File 'lib/capybara/webkit/node.rb', line 104

def visible?
  invoke("visible") == "true"
end

#visible_textObject Also known as: text



8
9
10
# File 'lib/capybara/webkit/node.rb', line 8

def visible_text
  Capybara::Helpers.normalize_whitespace(invoke("text"))
end