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 18 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 376 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 387 def accept_prompt(response) command 'set_prompt_response', response || false end
add_header(header, permanent)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 291 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 287 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 70 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 90 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 86 def attributes(page_id, id) command 'attributes', page_id, id end
body()
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 45 def body command 'body' end
clear_network_traffic()
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 271 def clear_network_traffic command('clear_network_traffic') end
click(page_id, id)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 179 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 118 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 158 def close_window(handle) command 'close_window', handle end
command(name, *args)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 348 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 37 def current_url command 'current_url' end
debug=(val)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 343 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 78 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 114 def disabled?(page_id, id) command 'disabled', page_id, id end
dismiss_confirm()
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 380 def dismiss_confirm command 'set_confirm_process', false end
dismiss_prompt()
click to toggle source
press “Cancel”
# File lib/capybara/poltergeist/browser.rb, line 394 def dismiss_prompt command 'set_prompt_response', nil end
double_click(page_id, id)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 187 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 195 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 199 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 275 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 122 def evaluate(script) command 'evaluate', script end
execute(script)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 126 def execute(script) command 'execute', script end
extensions=(names)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 332 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 61 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 162 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 66 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 279 def get_headers command 'get_headers' end
go_back()
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 368 def go_back command 'go_back' end
go_forward()
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 372 def go_forward command 'go_forward' end
hover(page_id, id)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 191 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 327 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 398 def modal_message command 'modal_message' end
network_traffic()
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 261 def network_traffic command('network_traffic').values.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 154 def open_new_window command 'open_new_window' end
parents(page_id, id)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 57 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 257 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 82 def property(page_id, id, name) command 'property', page_id, id, name.to_s end
render(path, options = {})
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 219 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 224 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 211 def reset command 'reset' end
resize(width, height)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 249 def resize(width, height) command 'resize', width, height end
response_headers()
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 295 def response_headers command 'response_headers' end
restart()
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 24 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)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 183 def right_click(page_id, id) command 'right_click', page_id, id end
scroll_to(left, top)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 215 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 203 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 102 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 253 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 98 def set(page_id, id, value) command 'set', page_id, id, value end
set_flash(s_version)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 237 def set_flash(s_version) command 'set_flash', s_version end
set_headers(headers)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 283 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 323 def set_http_auth(user, password) command 'set_http_auth', user, password end
set_java(s_java)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 241 def set_java(s_java) command 'set_java', s_java end
set_paper_size(size)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 245 def set_paper_size(size) command 'set_paper_size', size end
set_screen_size(s_width,s_height,s_color)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 233 def set_screen_size(s_width,s_height,s_color) command 'set_screen_size', s_width, s_height, s_color end
set_zoom_factor(zoom_factor)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 229 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 49 def source command 'source' end
status_code()
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 41 def status_code command 'status_code' end
switch_to_window(handle)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 150 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 106 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 53 def title command 'title' end
trigger(page_id, id, event)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 207 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 339 def url_blacklist=(blacklist) command 'set_url_blacklist', *blacklist end
value(page_id, id)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 94 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 110 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 74 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 33 def visit(url) command 'visit', url end
window_handle()
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 142 def window_handle command 'window_handle' end
window_handles()
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 146 def window_handles command 'window_handles' end
within_frame(handle) { || ... }
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 130 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 170 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 408 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 404 def log(message) logger.puts message if logger end
normalize_keys(keys)
click to toggle source
# File lib/capybara/poltergeist/browser.rb, line 415 def normalize_keys(keys) keys.map do |key| case key when Array # [:Shift, "s"] => { modifier: "shift", key: "S" } # [:Ctrl, :Left] => { modifier: "ctrl", key: :Left } # [:Ctrl, :Shift, :Left] => { modifier: "ctrl,shift", key: :Left } letter = key.pop symbol = key.map { |k| k.to_s.downcase }.join(',') { modifier: symbol.to_s.downcase, key: letter.capitalize } when Symbol { key: key.capitalize } # Return a known sequence for PhantomJS when String key # Plain string, nothing to do end end end