Class: Akephalos::Client
- Inherits:
-
Object
- Object
- Akephalos::Client
- Defined in:
- lib/akephalos/client.rb,
lib/akephalos/client/filter.rb,
lib/akephalos/client/cookies.rb
Overview
Akephalos::Client wraps HtmlUnit’s WebClient class. It is the main entry point for all interaction with the browser, exposing its current page and allowing navigation.
Defined Under Namespace
Constant Summary collapse
- DEFAULT_OPTIONS =
The default configuration options for a new Client.
{ :browser => :firefox_3_6, :validate_scripts => true, :use_insecure_ssl => false, :htmlunit_log_level => 'fatal' }
- BROWSER_VERSIONS =
Map of browser version symbols to their HtmlUnit::BrowserVersion instances.
{ :ie6 => HtmlUnit::BrowserVersion::INTERNET_EXPLORER_6, :ie7 => HtmlUnit::BrowserVersion::INTERNET_EXPLORER_7, :ie8 => HtmlUnit::BrowserVersion::INTERNET_EXPLORER_8, :firefox_3_6 => HtmlUnit::BrowserVersion::FIREFOX_3_6 }
Instance Attribute Summary collapse
-
#browser_version ⇒ HtmlUnit::BrowserVersion
readonly
The configured browser version.
-
#htmlunit_log_level ⇒ "trace" / "debug" / "info" / "warn" / "error" or "fatal"
readonly
Which points the htmlunit log level.
-
#page ⇒ Page
The current page.
-
#use_insecure_ssl ⇒ true/false
readonly
Whether to ignore insecure ssl certificates.
-
#validate_scripts ⇒ true/false
readonly
Whether to raise errors on javascript failures.
Instance Method Summary collapse
- #close_all_windows ⇒ Object
-
#confirm_dialog(confirm = true, &block) ⇒ Object
Confirm or cancel the dialog, returning the text of the dialog.
-
#cookies ⇒ Cookies
The cookies for this session.
-
#initialize(options = {}) ⇒ Client
constructor
A new instance of Client.
-
#process_options!(options) ⇒ Object
Merges the DEFAULT_OPTIONS with those provided to initialize the Client state, namely, its browser version, whether it should validate scripts, and htmlunit log level.
-
#use_insecure_ssl? ⇒ true, false
Whether to ignore insecure ssl certificates.
-
#user_agent ⇒ String
The current user agent string.
-
#user_agent=(user_agent) ⇒ Object
Set the User-Agent header for this session.
-
#validate_scripts? ⇒ true, false
Whether javascript errors will raise exceptions.
-
#visit(url) ⇒ Page
Visit the requested URL and return the page.
Constructor Details
#initialize(options = {}) ⇒ Client
Returns a new instance of Client.
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/akephalos/client.rb', line 63 def initialize( = {}) () @_client = java.util.concurrent.FutureTask.new do if @http_proxy.nil? or @http_proxy_port.nil? client = HtmlUnit::WebClient.new(browser_version) else client = HtmlUnit::WebClient.new(browser_version, @http_proxy, @http_proxy_port) end client.setThrowExceptionOnFailingStatusCode(false) client.setAjaxController(HtmlUnit::NicelyResynchronizingAjaxController.new) client.setCssErrorHandler(HtmlUnit::SilentCssErrorHandler.new) client.setThrowExceptionOnScriptError(validate_scripts) client.setUseInsecureSSL(use_insecure_ssl) client.setRefreshHandler(HtmlUnit::WaitingRefreshHandler.new) Filter.new(client) client end Thread.new { @_client.run } end |
Instance Attribute Details
#browser_version ⇒ HtmlUnit::BrowserVersion (readonly)
Returns the configured browser version.
28 29 30 |
# File 'lib/akephalos/client.rb', line 28 def browser_version @browser_version end |
#htmlunit_log_level ⇒ "trace" / "debug" / "info" / "warn" / "error" or "fatal" (readonly)
Returns which points the htmlunit log level.
37 38 39 |
# File 'lib/akephalos/client.rb', line 37 def htmlunit_log_level @htmlunit_log_level end |
#page ⇒ Page
Returns the current page.
25 26 27 |
# File 'lib/akephalos/client.rb', line 25 def page @page end |
#use_insecure_ssl ⇒ true/false (readonly)
Returns whether to ignore insecure ssl certificates.
34 35 36 |
# File 'lib/akephalos/client.rb', line 34 def use_insecure_ssl @use_insecure_ssl end |
#validate_scripts ⇒ true/false (readonly)
Returns whether to raise errors on javascript failures.
31 32 33 |
# File 'lib/akephalos/client.rb', line 31 def validate_scripts @validate_scripts end |
Instance Method Details
#close_all_windows ⇒ Object
175 176 177 |
# File 'lib/akephalos/client.rb', line 175 def close_all_windows() @client.closeAllWindows() end |
#confirm_dialog(confirm = true, &block) ⇒ Object
Confirm or cancel the dialog, returning the text of the dialog
167 168 169 170 171 172 173 |
# File 'lib/akephalos/client.rb', line 167 def confirm_dialog(confirm = true, &block) handler = HtmlUnit::ConfirmHandler.new handler.handleConfirmValue = confirm client.setConfirmHandler(handler) yield if block_given? return handler.text end |
#cookies ⇒ Cookies
Returns the cookies for this session.
97 98 99 |
# File 'lib/akephalos/client.rb', line 97 def @cookies ||= Cookies.new(client.getCookieManager) end |
#process_options!(options) ⇒ Object
Merges the DEFAULT_OPTIONS with those provided to initialize the Client state, namely, its browser version, whether it should validate scripts, and htmlunit log level.
153 154 155 156 157 158 159 160 161 162 163 164 |
# File 'lib/akephalos/client.rb', line 153 def () = DEFAULT_OPTIONS.merge() @browser_version = BROWSER_VERSIONS.fetch(.delete(:browser)) @validate_scripts = .delete(:validate_scripts) @use_insecure_ssl = .delete(:use_insecure_ssl) @htmlunit_log_level = .delete(:htmlunit_log_level) @http_proxy = .delete(:http_proxy) @http_proxy_port = .delete(:http_proxy_port) java.lang.System.setProperty("org.apache.commons.logging.simplelog.defaultlog", @htmlunit_log_level) end |
#use_insecure_ssl? ⇒ true, false
Returns whether to ignore insecure ssl certificates.
144 145 146 |
# File 'lib/akephalos/client.rb', line 144 def use_insecure_ssl? !!use_insecure_ssl end |
#user_agent ⇒ String
Returns the current user agent string.
102 103 104 |
# File 'lib/akephalos/client.rb', line 102 def user_agent @user_agent || client.getBrowserVersion.getUserAgent end |
#user_agent=(user_agent) ⇒ Object
Set the User-Agent header for this session. If :default is given, the User-Agent header will be reset to the default browser’s user agent.
111 112 113 114 115 116 117 118 119 |
# File 'lib/akephalos/client.rb', line 111 def user_agent=(user_agent) if user_agent == :default @user_agent = nil client.removeRequestHeader("User-Agent") else @user_agent = user_agent client.addRequestHeader("User-Agent", user_agent) end end |
#validate_scripts? ⇒ true, false
Returns whether javascript errors will raise exceptions.
139 140 141 |
# File 'lib/akephalos/client.rb', line 139 def validate_scripts? !!validate_scripts end |
#visit(url) ⇒ Page
Visit the requested URL and return the page.
91 92 93 94 |
# File 'lib/akephalos/client.rb', line 91 def visit(url) client.getPage(url) page end |