1
0
Fork 0
mirror of https://github.com/thoughtbot/capybara-webkit synced 2023-03-27 23:22:28 -04:00
capybara-webkit/lib/capybara/webkit/driver.rb
Dan Ivovich e677cb9c8e Control JavaScript confirmation dialogs from Ruby
Adds #alert_messages, #confirm_messages, #prompt_messages,
 #accept_js_confirms!, #dismiss_js_confirms, #accept_js_prompts!,
 #dismiss_js_prompts, and #js_prompt_input= .
2012-07-13 10:12:49 -07:00

186 lines
3.2 KiB
Ruby

require "capybara"
require "capybara/webkit/version"
require "capybara/webkit/node"
require "capybara/webkit/connection"
require "capybara/webkit/browser"
require "capybara/webkit/socket_debugger"
require "capybara/webkit/cookie_jar"
require "capybara/webkit/errors"
module Capybara::Webkit
class Driver
attr_reader :browser
def initialize(app, options={})
@app = app
@options = options
@rack_server = Capybara::Server.new(@app)
@rack_server.boot if Capybara.run_server
@browser = options[:browser] || Browser.new(Connection.new(options))
end
def enable_logging
browser.enable_logging
end
def current_url
browser.current_url
end
def requested_url
browser.requested_url
end
def visit(path)
browser.visit(url(path))
end
def find(query)
browser.find(query).map { |native| Node.new(self, native) }
end
def source
browser.source
end
def body
browser.body
end
def header(key, value)
browser.header(key, value)
end
def execute_script(script)
value = browser.execute_script script
value.empty? ? nil : value
end
def evaluate_script(script)
browser.evaluate_script script
end
def console_messages
browser.console_messages
end
def error_messages
browser.error_messages
end
def alert_messages
browser.alert_messages
end
def confirm_messages
browser.confirm_messages
end
def prompt_messages
browser.prompt_messages
end
def response_headers
browser.response_headers
end
def status_code
browser.status_code
end
def resize_window(width, height)
browser.resize_window(width, height)
end
def within_frame(frame_id_or_index)
browser.frame_focus(frame_id_or_index)
begin
yield
ensure
browser.frame_focus
end
end
def within_window(selector)
current_window = window_handle
browser.window_focus(selector)
begin
yield
ensure
browser.window_focus(current_window)
end
end
def window_handles
browser.get_window_handles
end
def window_handle
browser.get_window_handle
end
def accept_js_confirms!
browser.accept_js_confirms
end
def dismiss_js_confirms!
browser.reject_js_confirms
end
def accept_js_prompts!
browser.accept_js_prompts
end
def dismiss_js_prompts!
browser.reject_js_prompts
end
def js_prompt_input=(value)
if value.nil?
browser.clear_prompt_text
else
browser.set_prompt_text_to(value)
end
end
def wait?
true
end
def wait_until(*args)
end
def reset!
browser.reset!
end
def has_shortcircuit_timeout?
false
end
def render(path, options={})
options[:width] ||= 1000
options[:height] ||= 10
browser.render path, options[:width], options[:height]
end
def server_port
@rack_server.port
end
def cookies
@cookie_jar ||= CookieJar.new(browser)
end
def invalid_element_errors
[]
end
private
def url(path)
@rack_server.url(path)
end
end
end