Class: Capybara::Cuprite::Browser

Inherits:
Ferrum::Browser
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/capybara/cuprite/browser.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = nil) ⇒ Browser

Returns a new instance of Browser.



15
16
17
18
19
20
21
22
# File 'lib/capybara/cuprite/browser.rb', line 15

def initialize(options = nil)
  options ||= {}
  self.url_blacklist = options[:url_blacklist]
  self.url_whitelist = options[:url_whitelist]

  super
  @page = false
end

Instance Attribute Details

#url_blacklistObject

Returns the value of attribute url_blacklist.



13
14
15
# File 'lib/capybara/cuprite/browser.rb', line 13

def url_blacklist
  @url_blacklist
end

#url_whitelistObject

Returns the value of attribute url_whitelist.



13
14
15
# File 'lib/capybara/cuprite/browser.rb', line 13

def url_whitelist
  @url_whitelist
end

Instance Method Details

#all_text(node) ⇒ Object



170
171
172
# File 'lib/capybara/cuprite/browser.rb', line 170

def all_text(node)
  node.text
end

#attribute(node, name) ⇒ Object



150
151
152
# File 'lib/capybara/cuprite/browser.rb', line 150

def attribute(node, name)
  evaluate_on(node: node, expression: %Q(_cuprite.getAttribute(this, "#{name}")))
end

#attributes(node) ⇒ Object



145
146
147
148
# File 'lib/capybara/cuprite/browser.rb', line 145

def attributes(node)
  value = evaluate_on(node: node, expression: "_cuprite.getAttributes(this)")
  JSON.parse(value)
end

#browser_errorObject



113
114
115
# File 'lib/capybara/cuprite/browser.rb', line 113

def browser_error
  evaluate("_cuprite.browserError()")
end

#close_window(target_id) ⇒ Object

Raises:

  • (Ferrum::NoSuchPageError)


106
107
108
109
110
111
# File 'lib/capybara/cuprite/browser.rb', line 106

def close_window(target_id)
  target = targets[target_id]
  raise Ferrum::NoSuchPageError unless target
  @page = nil if @page == target.page
  target.page.close
end

#delete_text(node) ⇒ Object



141
142
143
# File 'lib/capybara/cuprite/browser.rb', line 141

def delete_text(node)
  evaluate_on(node: node, expression: "_cuprite.deleteText(this)")
end

#disabled?(node) ⇒ Boolean

Returns:

  • (Boolean)


162
163
164
# File 'lib/capybara/cuprite/browser.rb', line 162

def disabled?(node)
  evaluate_on(node: node, expression: "_cuprite.isDisabled(this)")
end

#drag(node, other) ⇒ Object

Raises:

  • (NotImplementedError)


121
122
123
# File 'lib/capybara/cuprite/browser.rb', line 121

def drag(node, other)
  raise NotImplementedError
end

#drag_by(node, x, y) ⇒ Object

Raises:

  • (NotImplementedError)


125
126
127
# File 'lib/capybara/cuprite/browser.rb', line 125

def drag_by(node, x, y)
  raise NotImplementedError
end

#find(method, selector) ⇒ Object



57
58
59
# File 'lib/capybara/cuprite/browser.rb', line 57

def find(method, selector)
  find_all(method, selector)
end

#find_within(node, method, selector) ⇒ Object



65
66
67
68
69
# File 'lib/capybara/cuprite/browser.rb', line 65

def find_within(node, method, selector)
  resolved = page.command("DOM.resolveNode", nodeId: node.node_id)
  object_id = resolved.dig("object", "objectId")
  find_all(method, selector, { "objectId" => object_id })
end

#pageObject

Raises:

  • (Ferrum::NoSuchPageError)


24
25
26
27
# File 'lib/capybara/cuprite/browser.rb', line 24

def page
  raise Ferrum::NoSuchPageError if @page.nil?
  @page ||= default_context.page
end

#parents(node) ⇒ Object



133
134
135
# File 'lib/capybara/cuprite/browser.rb', line 133

def parents(node)
  evaluate_on(node: node, expression: "_cuprite.parents(this)", by_value: false)
end

#path(node) ⇒ Object



166
167
168
# File 'lib/capybara/cuprite/browser.rb', line 166

def path(node)
  evaluate_on(node: node, expression: "_cuprite.path(this)")
end

#property(node, name) ⇒ Object



61
62
63
# File 'lib/capybara/cuprite/browser.rb', line 61

def property(node, name)
  node.property(name)
end

#quitObject



34
35
36
37
# File 'lib/capybara/cuprite/browser.rb', line 34

def quit
  super
  @page = false
end

#resetObject



29
30
31
32
# File 'lib/capybara/cuprite/browser.rb', line 29

def reset
  super
  @page = default_context.page
end

#select_file(node, value) ⇒ Object



129
130
131
# File 'lib/capybara/cuprite/browser.rb', line 129

def select_file(node, value)
  node.select_file(value)
end

#sourceObject

Raises:

  • (NotImplementedError)


117
118
119
# File 'lib/capybara/cuprite/browser.rb', line 117

def source
  raise NotImplementedError
end

#status_codeObject



53
54
55
# File 'lib/capybara/cuprite/browser.rb', line 53

def status_code
  network.status
end

#switch_to_window(target_id) ⇒ Object

Raises:

  • (Ferrum::NoSuchPageError)


100
101
102
103
104
# File 'lib/capybara/cuprite/browser.rb', line 100

def switch_to_window(target_id)
  target = targets[target_id]
  raise Ferrum::NoSuchPageError unless target
  @page = target.page
end

#value(node) ⇒ Object



154
155
156
# File 'lib/capybara/cuprite/browser.rb', line 154

def value(node)
  evaluate_on(node: node, expression: "_cuprite.value(this)")
end

#visible?(node) ⇒ Boolean

Returns:

  • (Boolean)


158
159
160
# File 'lib/capybara/cuprite/browser.rb', line 158

def visible?(node)
  evaluate_on(node: node, expression: "_cuprite.isVisible(this)")
end

#visible_text(node) ⇒ Object



137
138
139
# File 'lib/capybara/cuprite/browser.rb', line 137

def visible_text(node)
  evaluate_on(node: node, expression: "_cuprite.visibleText(this)")
end

#visit(*args) ⇒ Object



49
50
51
# File 'lib/capybara/cuprite/browser.rb', line 49

def visit(*args)
  goto(*args)
end

#window_handleObject



71
72
73
# File 'lib/capybara/cuprite/browser.rb', line 71

def window_handle
  page.target_id
end

#window_handlesObject



75
76
77
# File 'lib/capybara/cuprite/browser.rb', line 75

def window_handles
  targets.keys
end

#within_window(locator = nil, &block) ⇒ Object



79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# File 'lib/capybara/cuprite/browser.rb', line 79

def within_window(locator = nil, &block)
  original = window_handle

  if Capybara::VERSION.to_f < 3.0
    target_id = window_handles.find do |target_id|
      page = targets[target_id].page
      locator == page.frame_name
    end
    locator = target_id if target_id
  end

  if window_handles.include?(locator)
    switch_to_window(locator)
    yield
  else
    raise Ferrum::NoSuchPageError
  end
ensure
  switch_to_window(original)
end