class Capybara::Cuprite::Browser
Attributes
url_blacklist[R]
url_whitelist[R]
Public Class Methods
new(options = nil)
click to toggle source
Calls superclass method
# 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
Public Instance Methods
all_text(node)
click to toggle source
# File lib/capybara/cuprite/browser.rb, line 170 def all_text(node) node.text end
attribute(node, name)
click to toggle source
# 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)
click to toggle source
# 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_error()
click to toggle source
# File lib/capybara/cuprite/browser.rb, line 113 def browser_error evaluate("_cuprite.browserError()") end
close_window(target_id)
click to toggle source
# 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_id == target.id target.page.close end
delete_text(node)
click to toggle source
# File lib/capybara/cuprite/browser.rb, line 141 def delete_text(node) evaluate_on(node: node, expression: "_cuprite.deleteText(this)") end
disabled?(node)
click to toggle source
# File lib/capybara/cuprite/browser.rb, line 162 def disabled?(node) evaluate_on(node: node, expression: "_cuprite.isDisabled(this)") end
drag(node, other)
click to toggle source
# File lib/capybara/cuprite/browser.rb, line 121 def drag(node, other) raise NotImplementedError end
drag_by(node, x, y)
click to toggle source
# File lib/capybara/cuprite/browser.rb, line 125 def drag_by(node, x, y) raise NotImplementedError end
find(method, selector)
click to toggle source
# File lib/capybara/cuprite/browser.rb, line 57 def find(method, selector) find_all(method, selector) end
find_within(node, method, selector)
click to toggle source
# 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
page()
click to toggle source
# File lib/capybara/cuprite/browser.rb, line 24 def page raise Ferrum::NoSuchPageError if @page.nil? @page ||= attach_page end
parents(node)
click to toggle source
# 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)
click to toggle source
# File lib/capybara/cuprite/browser.rb, line 166 def path(node) evaluate_on(node: node, expression: "_cuprite.path(this)") end
property(node, name)
click to toggle source
# File lib/capybara/cuprite/browser.rb, line 61 def property(node, name) node.property(name) end
quit()
click to toggle source
Calls superclass method
# File lib/capybara/cuprite/browser.rb, line 34 def quit super @page = false end
reset()
click to toggle source
Calls superclass method
# File lib/capybara/cuprite/browser.rb, line 29 def reset super @page = attach_page end
select_file(node, value)
click to toggle source
# File lib/capybara/cuprite/browser.rb, line 129 def select_file(node, value) node.select_file(value) end
source()
click to toggle source
# File lib/capybara/cuprite/browser.rb, line 117 def source raise NotImplementedError end
status_code()
click to toggle source
# File lib/capybara/cuprite/browser.rb, line 53 def status_code network.status end
switch_to_window(target_id)
click to toggle source
# File lib/capybara/cuprite/browser.rb, line 100 def switch_to_window(target_id) target = targets[target_id] raise Ferrum::NoSuchPageError unless target @page = attach_page(target.id) end
url_blacklist=(patterns)
click to toggle source
# File lib/capybara/cuprite/browser.rb, line 44 def url_blacklist=(patterns) @url_blacklist = prepare_wildcards(patterns) page.network.intercept if @client && !@url_blacklist.empty? end
url_whitelist=(patterns)
click to toggle source
# File lib/capybara/cuprite/browser.rb, line 39 def url_whitelist=(patterns) @url_whitelist = prepare_wildcards(patterns) page.network.intercept if @client && !@url_whitelist.empty? end
value(node)
click to toggle source
# File lib/capybara/cuprite/browser.rb, line 154 def value(node) evaluate_on(node: node, expression: "_cuprite.value(this)") end
visible?(node)
click to toggle source
# File lib/capybara/cuprite/browser.rb, line 158 def visible?(node) evaluate_on(node: node, expression: "_cuprite.isVisible(this)") end
visible_text(node)
click to toggle source
# File lib/capybara/cuprite/browser.rb, line 137 def visible_text(node) evaluate_on(node: node, expression: "_cuprite.visibleText(this)") end
visit(*args)
click to toggle source
# File lib/capybara/cuprite/browser.rb, line 49 def visit(*args) goto(*args) end
window_handle()
click to toggle source
# File lib/capybara/cuprite/browser.rb, line 71 def window_handle page.target_id end
window_handles()
click to toggle source
# File lib/capybara/cuprite/browser.rb, line 75 def window_handles targets.keys end
within_window(locator = nil) { || ... }
click to toggle source
# 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 = attach_page(target_id) 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
Private Instance Methods
attach_page(target_id = nil)
click to toggle source
# File lib/capybara/cuprite/browser.rb, line 204 def attach_page(target_id = nil) target = targets[target_id] if target_id target ||= default_context.default_target return target.page if target.attached? target.maybe_sleep_if_new_window target.page = Page.new(target.id, self) target.page end
find_all(method, selector, within = nil)
click to toggle source
# File lib/capybara/cuprite/browser.rb, line 176 def find_all(method, selector, within = nil) begin nodes = if within evaluate("_cuprite.find(arguments[0], arguments[1], arguments[2])", method, selector, within) else evaluate("_cuprite.find(arguments[0], arguments[1])", method, selector) end nodes.map { |n| n.node? ? n : next }.compact rescue Ferrum::JavaScriptError => e if e.class_name == "InvalidSelector" raise InvalidSelector.new(e.response, method, selector) end raise end end
prepare_wildcards(wc)
click to toggle source
# File lib/capybara/cuprite/browser.rb, line 193 def prepare_wildcards(wc) Array(wc).map do |wildcard| if wildcard.is_a?(Regexp) wildcard else wildcard = wildcard.gsub("*", ".*") Regexp.new(wildcard, Regexp::IGNORECASE) end end end