class Capybara::Poltergeist::Driver

Constants

DEFAULT_TIMEOUT

Attributes

app[R]
browser[R]
client[R]
options[R]
server[R]

Public Class Methods

new(app, options = {}) click to toggle source
# File lib/capybara/poltergeist/driver.rb, line 9
def initialize(app, options = {})
  @app       = app
  @options   = options
  @browser   = nil
  @inspector = nil
  @server    = nil
  @client    = nil
  @started   = false
end

Public Instance Methods

add_header(name, value, options = {}) click to toggle source
# File lib/capybara/poltergeist/driver.rb, line 201
def add_header(name, value, options = {})
  permanent = options.fetch(:permanent, true)
  browser.add_header({ name => value }, permanent)
end
add_headers(headers) click to toggle source
# File lib/capybara/poltergeist/driver.rb, line 197
def add_headers(headers)
  browser.add_headers(headers)
end
basic_authorize(user, password) click to toggle source
  • PhantomJS with set settings doesn’t send ‘Authorize` on POST request

  • With manually set header PhantomJS makes next request with

‘Authorization: Basic Og==` header when settings are empty and the response was `401 Unauthorized` (which means Base64.encode64(’:‘)). Combining both methods to reach proper behavior.

# File lib/capybara/poltergeist/driver.rb, line 241
def basic_authorize(user, password)
  browser.set_http_auth(user, password)
  credentials = ["#{user}:#{password}"].pack('m*').strip
  add_header('Authorization', "Basic #{credentials}")
end
body()
Alias for: html
clear_network_traffic() click to toggle source
# File lib/capybara/poltergeist/driver.rb, line 185
def clear_network_traffic
  browser.clear_network_traffic
end
click(x, y) click to toggle source
# File lib/capybara/poltergeist/driver.rb, line 125
def click(x, y)
  browser.click_coordinates(x, y)
end
client_pid() click to toggle source
# File lib/capybara/poltergeist/driver.rb, line 56
def client_pid
  client.pid
end
cookies() click to toggle source
# File lib/capybara/poltergeist/driver.rb, line 210
def cookies
  browser.cookies
end
cookies_enabled=(flag) click to toggle source
# File lib/capybara/poltergeist/driver.rb, line 232
def cookies_enabled=(flag)
  browser.cookies_enabled = flag
end
current_url() click to toggle source
# File lib/capybara/poltergeist/driver.rb, line 92
def current_url
  browser.current_url
end
debug() click to toggle source
# File lib/capybara/poltergeist/driver.rb, line 247
def debug
  if @options[:inspector]
    inspector.open
    pause
  else
    raise Error, "To use the remote debugging, you have to launch the driver " \
                 "with `:inspector => true` configuration option"
  end
end
evaluate_script(script) click to toggle source
# File lib/capybara/poltergeist/driver.rb, line 129
def evaluate_script(script)
  browser.evaluate(script)
end
execute_script(script) click to toggle source
# File lib/capybara/poltergeist/driver.rb, line 133
def execute_script(script)
  browser.execute(script)
  nil
end
find(method, selector) click to toggle source
# File lib/capybara/poltergeist/driver.rb, line 113
def find(method, selector)
  browser.find(method, selector).map { |page_id, id| Capybara::Poltergeist::Node.new(self, page_id, id) }
end
find_css(selector) click to toggle source
# File lib/capybara/poltergeist/driver.rb, line 121
def find_css(selector)
  find :css, selector
end
find_xpath(selector) click to toggle source
# File lib/capybara/poltergeist/driver.rb, line 117
def find_xpath(selector)
  find :xpath, selector
end
go_back() click to toggle source
# File lib/capybara/poltergeist/driver.rb, line 270
def go_back
  browser.go_back
end
go_forward() click to toggle source
# File lib/capybara/poltergeist/driver.rb, line 274
def go_forward
  browser.go_forward
end
headers() click to toggle source
# File lib/capybara/poltergeist/driver.rb, line 189
def headers
  browser.get_headers
end
headers=(headers) click to toggle source
# File lib/capybara/poltergeist/driver.rb, line 193
def headers=(headers)
  browser.set_headers(headers)
end
html() click to toggle source
# File lib/capybara/poltergeist/driver.rb, line 100
def html
  browser.body
end
Also aliased as: body
inspector() click to toggle source
# File lib/capybara/poltergeist/driver.rb, line 33
def inspector
  @inspector ||= options[:inspector] && Inspector.new(options[:inspector])
end
invalid_element_errors() click to toggle source
# File lib/capybara/poltergeist/driver.rb, line 266
def invalid_element_errors
  [Capybara::Poltergeist::ObsoleteNode, Capybara::Poltergeist::MouseEventFailed]
end
logger() click to toggle source

logger should be an object that responds to puts, or nil

# File lib/capybara/poltergeist/driver.rb, line 78
def logger
  options[:logger] || (options[:debug] && STDERR)
end
needs_server?() click to toggle source
# File lib/capybara/poltergeist/driver.rb, line 19
def needs_server?
  true
end
network_traffic() click to toggle source
# File lib/capybara/poltergeist/driver.rb, line 181
def network_traffic
  browser.network_traffic
end
paper_size=(size = {}) click to toggle source
# File lib/capybara/poltergeist/driver.rb, line 164
def paper_size=(size = {})
  browser.set_paper_size(size)
end
pause() click to toggle source
# File lib/capybara/poltergeist/driver.rb, line 257
def pause
  STDERR.puts "Poltergeist execution paused. Press enter to continue."
  STDIN.gets
end
phantomjs_logger() click to toggle source

logger should be an object that behaves like IO or nil

# File lib/capybara/poltergeist/driver.rb, line 83
def phantomjs_logger
  options.fetch(:phantomjs_logger, nil)
end
phantomjs_options() click to toggle source
# File lib/capybara/poltergeist/driver.rb, line 50
def phantomjs_options
  list = options[:phantomjs_options] || []
  list += ["--remote-debugger-port=#{inspector.port}", "--remote-debugger-autorun=yes"] if inspector
  list
end
quit() click to toggle source
# File lib/capybara/poltergeist/driver.rb, line 72
def quit
  server.stop
  client.stop
end
render(path, options = {})
Alias for: save_screenshot
render_base64(format = :png, options = {}) click to toggle source
# File lib/capybara/poltergeist/driver.rb, line 160
def render_base64(format = :png, options = {})
  browser.render_base64(format, options)
end
reset!() click to toggle source
# File lib/capybara/poltergeist/driver.rb, line 150
def reset!
  browser.reset
  @started = false
end
resize(width, height) click to toggle source
# File lib/capybara/poltergeist/driver.rb, line 172
def resize(width, height)
  browser.resize(width, height)
end
Also aliased as: resize_window
resize_window(width, height)
Alias for: resize
response_headers() click to toggle source
# File lib/capybara/poltergeist/driver.rb, line 206
def response_headers
  browser.response_headers
end
restart() click to toggle source
# File lib/capybara/poltergeist/driver.rb, line 68
def restart
  browser.restart
end
save_screenshot(path, options = {}) click to toggle source
# File lib/capybara/poltergeist/driver.rb, line 155
def save_screenshot(path, options = {})
  browser.render(path, options)
end
Also aliased as: render
scroll_to(left, top) click to toggle source
# File lib/capybara/poltergeist/driver.rb, line 177
def scroll_to(left, top)
  browser.scroll_to(left, top)
end
source() click to toggle source
# File lib/capybara/poltergeist/driver.rb, line 105
def source
  browser.source.to_s
end
status_code() click to toggle source
# File lib/capybara/poltergeist/driver.rb, line 96
def status_code
  browser.status_code
end
timeout() click to toggle source
# File lib/capybara/poltergeist/driver.rb, line 60
def timeout
  server.timeout
end
timeout=(sec) click to toggle source
# File lib/capybara/poltergeist/driver.rb, line 64
def timeout=(sec)
  server.timeout = sec
end
title() click to toggle source
# File lib/capybara/poltergeist/driver.rb, line 109
def title
  browser.title
end
visit(url) click to toggle source
# File lib/capybara/poltergeist/driver.rb, line 87
def visit(url)
  @started = true
  browser.visit(url)
end
wait?() click to toggle source
# File lib/capybara/poltergeist/driver.rb, line 262
def wait?
  true
end
window_handles() click to toggle source
# File lib/capybara/poltergeist/driver.rb, line 146
def window_handles
  browser.window_handles
end
within_frame(name, &block) click to toggle source
# File lib/capybara/poltergeist/driver.rb, line 138
def within_frame(name, &block)
  browser.within_frame(name, &block)
end
within_window(name, &block) click to toggle source
# File lib/capybara/poltergeist/driver.rb, line 142
def within_window(name, &block)
  browser.within_window(name, &block)
end
zoom_factor=(zoom_factor) click to toggle source
# File lib/capybara/poltergeist/driver.rb, line 168
def zoom_factor=(zoom_factor)
  browser.set_zoom_factor(zoom_factor)
end