class Capybara::Poltergeist::Browser
Constants
- ERROR_MAPPINGS
Attributes
client[R]
logger[R]
server[R]
Public Class Methods
new(server, client, logger = nil)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 15 def initialize(server, client, logger = nil) @server = server @client = client @logger = logger end
Public Instance Methods
add_header(header, permanent)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 219 def add_header(header, permanent) command 'add_header', header, permanent end
add_headers(headers)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 215 def add_headers(headers) command 'add_headers', headers end
all_text(page_id, id)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 61 def all_text(page_id, id) command 'all_text', page_id, id end
attribute(page_id, id, name)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 73 def attribute(page_id, id, name) command 'attribute', page_id, id, name.to_s end
body()
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 40 def body command 'body' end
clear_network_traffic()
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 199 def clear_network_traffic command('clear_network_traffic') end
click(page_id, id)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 136 def click(page_id, id) command 'click', page_id, id end
click_coordinates(x, y)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 101 def click_coordinates(x, y) command 'click_coordinates', x, y end
command(name, *args)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 266 def command(name, *args) message = { 'name' => name, 'args' => args } log message.inspect json = JSON.load(server.send(JSON.dump(message))) log json.inspect if json['error'] klass = ERROR_MAPPINGS[json['error']['name']] || BrowserError raise klass.new(json['error']) else json['response'] end rescue DeadClient restart raise end
current_url()
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 32 def current_url command 'current_url' end
debug=(val)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 261 def debug=(val) @debug = val command 'set_debug', !!val end
delete_text(page_id, id)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 69 def delete_text(page_id, id) command 'delete_text', page_id, id end
disabled?(page_id, id)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 97 def disabled?(page_id, id) command 'disabled', page_id, id end
double_click(page_id, id)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 140 def double_click(page_id, id) command 'double_click', page_id, id end
drag(page_id, id, other_id)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 148 def drag(page_id, id, other_id) command 'drag', page_id, id, other_id end
equals(page_id, id, other_id)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 203 def equals(page_id, id, other_id) command('equals', page_id, id, other_id) end
evaluate(script)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 105 def evaluate(script) command 'evaluate', script end
execute(script)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 109 def execute(script) command 'execute', script end
extensions=(names)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 255 def extensions=(names) Array(names).each do |name| command 'add_extension', name end end
find(method, selector)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 52 def find(method, selector) result = command('find', method, selector) result['ids'].map { |id| [result['page_id'], id] } end
find_within(page_id, id, method, selector)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 57 def find_within(page_id, id, method, selector) command 'find_within', page_id, id, method, selector end
get_headers()
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 207 def get_headers command 'get_headers' end
go_back()
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 284 def go_back command 'go_back' end
go_forward()
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 288 def go_forward command 'go_forward' end
hover(page_id, id)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 144 def hover(page_id, id) command 'hover', page_id, id end
js_errors=(val)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 251 def js_errors=(val) command 'set_js_errors', !!val end
network_traffic()
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 190 def network_traffic command('network_traffic').values.map do |event| NetworkTraffic::Request.new( event['request'], event['responseParts'].map { |response| NetworkTraffic::Response.new(response) } ) end end
render(path, options = {})
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 168 def render(path, options = {}) check_render_options!(options) command 'render', path.to_s, !!options[:full], options[:selector] end
render_base64(format, options = {})
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 173 def render_base64(format, options = {}) check_render_options!(options) command 'render_base64', format.to_s, !!options[:full], options[:selector] end
reset()
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 160 def reset command 'reset' end
resize(width, height)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 182 def resize(width, height) command 'resize', width, height end
response_headers()
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 223 def response_headers command 'response_headers' end
restart()
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 21 def restart server.restart client.restart self.debug = @debug if @debug end
scroll_to(left, top)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 164 def scroll_to(left, top) command 'scroll_to', left, top end
select(page_id, id, value)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 152 def select(page_id, id, value) command 'select', page_id, id, value end
select_file(page_id, id, value)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 85 def select_file(page_id, id, value) command 'select_file', page_id, id, value end
send_keys(page_id, id, keys)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 186 def send_keys(page_id, id, keys) command 'send_keys', page_id, id, normalize_keys(keys) end
set(page_id, id, value)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 81 def set(page_id, id, value) command 'set', page_id, id, value end
set_headers(headers)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 211 def set_headers(headers) command 'set_headers', headers end
set_http_auth(user, password)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 247 def set_http_auth(user, password) command 'set_http_auth', user, password end
set_paper_size(size)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 178 def set_paper_size(size) command 'set_paper_size', size end
source()
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 44 def source command 'source' end
status_code()
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 36 def status_code command 'status_code' end
tag_name(page_id, id)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 89 def tag_name(page_id, id) command('tag_name', page_id, id).downcase end
title()
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 48 def title command 'title' end
trigger(page_id, id, event)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 156 def trigger(page_id, id, event) command 'trigger', page_id, id, event.to_s end
value(page_id, id)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 77 def value(page_id, id) command 'value', page_id, id end
visible?(page_id, id)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 93 def visible?(page_id, id) command 'visible', page_id, id end
visible_text(page_id, id)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 65 def visible_text(page_id, id) command 'visible_text', page_id, id end
visit(url)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 28 def visit(url) command 'visit', url end
window_handles()
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 125 def window_handles command 'pages' end
within_frame(handle) { || ... }
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 113 def within_frame(handle, &block) if handle.is_a?(Capybara::Node::Base) command 'push_frame', handle[:name] || handle[:id] else command 'push_frame', handle end yield ensure command 'pop_frame' end
within_window(name) { || ... }
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 129 def within_window(name, &block) command 'push_window', name yield ensure command 'pop_window' end
Private Instance Methods
check_render_options!(options)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 298 def check_render_options!(options) if !!options[:full] && options.has_key?(:selector) warn "Ignoring :selector in #render since :full => true was given at #{caller.first}" options.delete(:selector) end end
log(message)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 294 def log(message) logger.puts message if logger end
normalize_keys(keys)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 305 def normalize_keys(keys) keys.map do |key| case key when Array # String itself with modifiers like :alt, :shift, etc raise Error, 'PhantomJS behaviour for key modifiers is currently ' 'broken, we will add this in later versions' when Symbol { key: key } # Return a known sequence for PhantomJS when String key # Plain string, nothing to do end end end