class Capybara::Poltergeist::Browser
Constants
- ERROR_MAPPINGS
- KEY_ALIASES
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 23 def initialize(server, client, logger = nil) @server = server @client = client @logger = logger end
Public Instance Methods
accept_confirm()
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 417 def accept_confirm command 'set_confirm_process', true end
accept_prompt(response)
click to toggle source
press “OK” with text (response) or default value
# File lib/capybara/poltergeist/browser.rb, line 428 def accept_prompt(response) command 'set_prompt_response', response || false end
add_header(header, options={})
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 316 def add_header(header, options={}) command 'add_header', header, options end
add_headers(headers)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 312 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 83 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 103 def attribute(page_id, id, name) command 'attribute', page_id, id, name.to_s end
attributes(page_id, id)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 99 def attributes(page_id, id) command 'attributes', page_id, id end
body()
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 54 def body command 'body' end
clear_memory_cache()
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 381 def clear_memory_cache command 'clear_memory_cache' end
clear_network_traffic()
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 289 def clear_network_traffic command('clear_network_traffic') end
click(page_id, id, keys=[], offset={})
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 207 def click(page_id, id, keys=[], offset={}) command 'click', page_id, id, keys, offset end
click_coordinates(x, y)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 131 def click_coordinates(x, y) command 'click_coordinates', x, y end
close_window(handle)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 186 def close_window(handle) command 'close_window', handle end
command(name, *args)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 385 def command(name, *args) cmd = Command.new(name, *args) log cmd.message response = server.send(cmd) log response json = JSON.load(response) 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 42 def current_url command 'current_url' end
debug=(val)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 376 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 91 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 127 def disabled?(page_id, id) command 'disabled', page_id, id end
dismiss_confirm()
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 421 def dismiss_confirm command 'set_confirm_process', false end
dismiss_prompt()
click to toggle source
press “Cancel”
# File lib/capybara/poltergeist/browser.rb, line 435 def dismiss_prompt command 'set_prompt_response', nil end
double_click(page_id, id, keys=[], offset={})
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 215 def double_click(page_id, id, keys=[], offset={}) command 'double_click', page_id, id, keys, offset end
drag(page_id, id, other_id)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 223 def drag(page_id, id, other_id) command 'drag', page_id, id, other_id end
drag_by(page_id, id, x, y)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 227 def drag_by(page_id, id, x, y) command 'drag_by', page_id, id, x, y end
equals(page_id, id, other_id)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 300 def equals(page_id, id, other_id) command('equals', page_id, id, other_id) end
evaluate(script, *args)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 135 def evaluate(script, *args) command 'evaluate', script, *args end
evaluate_async(script, wait_time, *args)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 139 def evaluate_async(script, wait_time, *args) command 'evaluate_async', script, wait_time, *args end
execute(script, *args)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 143 def execute(script, *args) command 'execute', script, *args end
extensions=(names)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 361 def extensions=(names) @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 74 def find(method, selector) result = command('find', method, selector) result['ids'].map { |id| [result['page_id'], id] } end
find_window_handle(locator)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 190 def find_window_handle(locator) return locator if window_handles.include? locator handle = command 'window_handle', locator raise NoSuchWindowError unless handle return handle end
find_within(page_id, id, method, selector)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 79 def find_within(page_id, id, method, selector) command 'find_within', page_id, id, method, selector end
frame_title()
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 66 def frame_title command 'frame_title' end
frame_url()
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 46 def frame_url command 'frame_url' end
get_headers()
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 304 def get_headers command 'get_headers' end
go_back()
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 405 def go_back command 'go_back' end
go_forward()
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 409 def go_forward command 'go_forward' end
hover(page_id, id)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 219 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 352 def js_errors=(val) @js_errors = val command 'set_js_errors', !!val end
modal_message()
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 439 def modal_message command 'modal_message' end
network_traffic(type = nil)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 279 def network_traffic(type = nil) command('network_traffic', type).map do |event| NetworkTraffic::Request.new( event['request'], event['responseParts'].map { |response| NetworkTraffic::Response.new(response) }, event['error'] ? NetworkTraffic::Error.new(event['error']) : nil ) end end
open_new_window()
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 182 def open_new_window command 'open_new_window' end
page_settings=(settings)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 357 def page_settings=(settings) command 'set_page_settings', settings end
parents(page_id, id)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 70 def parents(page_id, id) command 'parents', page_id, id end
path(page_id, id)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 275 def path(page_id, id) command 'path', page_id, id end
property(page_id, id, name)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 95 def property(page_id, id, name) command 'property', page_id, id, name.to_s end
refresh()
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 413 def refresh command 'refresh' end
render(path, options = {})
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 247 def render(path, options = {}) check_render_options!(options) options[:full] = !!options[:full] command 'render', path.to_s, options end
render_base64(format, options = {})
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 253 def render_base64(format, options = {}) check_render_options!(options) options[:full] = !!options[:full] command 'render_base64', format.to_s, options end
reset()
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 239 def reset command 'reset' end
resize(width, height)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 267 def resize(width, height) command 'resize', width, height end
response_headers()
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 320 def response_headers command 'response_headers' end
restart()
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 29 def restart server.restart client.restart self.debug = @debug if defined?(@debug) self.js_errors = @js_errors if defined?(@js_errors) self.extensions = @extensions if @extensions end
right_click(page_id, id, keys=[], offset={})
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 211 def right_click(page_id, id, keys=[], offset={}) command 'right_click', page_id, id, keys, offset end
scroll_to(left, top)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 243 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 231 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 115 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 271 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 111 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 308 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 348 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 263 def set_paper_size(size) command 'set_paper_size', size end
set_proxy(ip, port, type, user, password)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 293 def set_proxy(ip, port, type, user, password) args = [ip, port, type] args << user if user args << password if password command('set_proxy', *args) end
set_zoom_factor(zoom_factor)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 259 def set_zoom_factor(zoom_factor) command 'set_zoom_factor', zoom_factor end
source()
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 58 def source command 'source' end
status_code()
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 50 def status_code command 'status_code' end
switch_to_frame(handle)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 159 def switch_to_frame(handle) case handle when Capybara::Node::Base command 'push_frame', [handle.native.page_id, handle.native.id] when :parent command 'pop_frame' when :top command 'pop_frame', true end end
switch_to_window(handle)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 178 def switch_to_window(handle) command 'switch_to_window', handle end
tag_name(page_id, id)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 119 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 62 def title command 'title' end
trigger(page_id, id, event)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 235 def trigger(page_id, id, event) command 'trigger', page_id, id, event.to_s end
url_blacklist=(blacklist)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 372 def url_blacklist=(blacklist) command 'set_url_blacklist', *blacklist end
url_whitelist=(whitelist)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 368 def url_whitelist=(whitelist) command 'set_url_whitelist', *whitelist end
value(page_id, id)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 107 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 123 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 87 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 38 def visit(url) command 'visit', url end
window_handle()
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 170 def window_handle command 'window_handle' end
window_handles()
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 174 def window_handles command 'window_handles' end
within_frame(handle) { || ... }
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 147 def within_frame(handle, &block) if handle.is_a?(Capybara::Node::Base) command 'push_frame', [handle.native.page_id, handle.native.id] else command 'push_frame', handle end yield ensure command 'pop_frame' end
within_window(locator) { || ... }
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 198 def within_window(locator, &block) original = window_handle handle = find_window_handle(locator) switch_to_window(handle) yield ensure switch_to_window(original) end
Private Instance Methods
check_render_options!(options)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 449 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 445 def log(message) logger.puts message if logger end
normalize_keys(keys)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 468 def normalize_keys(keys) keys.map do |key_desc| case key_desc when Array # [:Shift, "s"] => { modifier: "shift", keys: "S" } # [:Shift, "string"] => { modifier: "shift", keys: "STRING" } # [:Ctrl, :Left] => { modifier: "ctrl", key: 'Left' } # [:Ctrl, :Shift, :Left] => { modifier: "ctrl,shift", key: 'Left' } # [:Ctrl, :Left, :Left] => { modifier: "ctrl", key: [:Left, :Left] } _keys = key_desc.chunk {|k| k.is_a?(Symbol) && %w(shift ctrl control alt meta command).include?(k.to_s.downcase) } modifiers = if _keys.peek[0] _keys.next[1].map do |k| k = k.to_s.downcase k = 'ctrl' if k == 'control' k = 'meta' if k == 'command' k end.join(',') else '' end letters = normalize_keys(_keys.next[1].map {|k| k.is_a?(String) ? k.upcase : k }) { modifier: modifiers, keys: letters } when Symbol # Return a known sequence for PhantomJS key = KEY_ALIASES.fetch(key_desc, key_desc) if match = key.to_s.match(/numpad(.)/) res = { keys: match[1], modifier: 'keypad' } elsif key !~ /^[A-Z]/ key = key.to_s.split('_').map{ |e| e.capitalize }.join end res || { key: key } when String key_desc # Plain string, nothing to do end end end